Я пробовал это:
>>> df = [pd.read_csv(x,header=None,names=["L1","L2","cache","cached","result"]) for x in iglob(os.path.join("test","**","*.csv"), recursive=True)]
>>> df
[ L1 L2 cache cached result
0 0 0 0 0 0
1 1 2 3 4 5
2 1 1 1 1 1
3 2 2 2 2 2
4 4 4 4 4 4, L1 L2 cache cached result
0 1 2 3 4 5
1 1 2 3 4 5
2 3 4 5 6 7
3 2 1 3 2 4]
Структура папок такова:
test
|
|_______ wait
|
|______ 0.2322.csv
|______ 1.234.csv
Два файла содержат:
0.2322.csv
0,0,0,0,0
1,2,3,4,5
1,1,1,1,1
2,2,2,2,2
4,4,4,4,4
1.234.csv
1,2,3,4,5
1,2,3,4,5
3,4,5,6,7
2,1,3,2,4
Когда я пытаюсь получить доступ к кадрам данных из массива df
, мне приходится вызывать его со значениями индекса как 0,1
, т.е. df[0] and df[1]
.
Но я хочу назвать фрейм данных соответствующих файлов с именем файла в качестве индекса как df["0.2322"]
и df["1.234"]
. Но я не понимаю, как это возможно. Пожалуйста, дайте мне знать, что я могу сделать, чтобы достичь того, что я ожидаю.
Я думаю, вам нужно понимание словаря с именем файла синтаксического анализа без расширения:
import os
#https://stackoverflow.com/a/678242
df = {os.path.splitext(x)[0]: pd.read_csv(x,header=None,names=["L1","L2","cache","cached","result"]) for x in iglob(os.path.join("test","**","*.csv"), recursive=True)}
Обновлено:
#https://stackoverflow.com/a/37760212
df = {os.path.splitext(os.path.basename(x))[0]: pd.read_csv(x,header=None,names=["L1","L2","cache","cached","result"]) for x in iglob(os.path.join("test","**","*.csv"), recursive=True)}
Что я получаю это: {'test\\wait\\1.234': L1 L2 cache cached result
но я только то, что есть 1.234
@JafferWilson - Извините, добавил 2 решения, но я думаю, что os.path.splitext(x)[0]
должно работать хорошо.
Думаю, дело в этом. Позвольте мне попробовать это, пожалуйста