Я новичок в Python и анализа данных с использованием программирования.У меня есть длинный CSV, и я хотел бы динамически создавать DataFrame и строить их позже.Вот пример DataFrame, похожего на данные, которые существуют в моем CSV-файле
df = pd.DataFrame(
{"a" : [4 ,5, 6, 'a', 1, 2, 'a', 4, 5, 'a'],
"b" : [7, 8, 9, 'b', 0.1, 0.2, 'b', 0.3, 0.4, 'b'],
"c" : [10, 11, 12, 'c', 10, 20, 'c', 30, 40, 'c']})
Как видно, есть элементы, которые повторяются в каждом столбце.Поэтому мне сначала нужно найти индекс повторения и последующее его использование для создания подмножеств.Вот как я это сделал.
find_Repeat = df.groupby(['a'], group_keys=False).apply(lambda df: df if
df.shape[0] > 1 else None)
repeat_idxs = find_Repeat.index[find_Repeat['a'] == 'a'].tolist()
Если я напечатаю repeat_idxs, я получу
[3, 6, 9]
И это пример того, чего я хочу достичь в итоге
dfa_1 = df['a'][Index_Identifier[0], Index_Identifier[1])
dfa_2 = df['a'][Index_Identifier[1], Index_Identifier[2])
dfb_1 = df['b'][Index_Identifier[0], Index_Identifier[1])
dfb_2 = df['b'][Index_Identifier[1], Index_Identifier[2])
Но это неэффективно и удобно, так как мне нужно создать много DataFrame, подобных этим, для последующего построения.Поэтому я попробовал следующий метод
dfNames = ['dfa_' + str(i) for i in range(len(repeat_idxs))]
dfs = dict()
for i, row in enumerate(repeat_idxs):
dfName = dfNames[i]
slices = df['a'].loc[row:row+1]
dfs[dfName] = slices
Если я распечатаю dfs, это именно то, что я хочу.
{'df_0': 3 a
4 1
Name: a, dtype: object, 'df_1': 6 a
7 4
Name: a, dtype: object, 'df_2': 9 a
Name: a, dtype: object}
Однако, если я хочу прочитать свой csv и применить вышеизложенное,Я не получаю желаемого.Я могу найти повторяющиеся индексы из CSV-файла, но я не могу правильно нарезать данные.Я предполагаю, что я не читаю CSV-файл правильно.Я приложил файл CSV для дальнейшего уточнения CSV файл