我有一个庞大的数据集,我想根据第一列的字符串值将其分成几个较小的数据集。
现在,我已删除了最终数据框中不需要的所有信息,并使用数据帧字典进行了动态创建(无济于事)并创建了拆分。
对于数据框字典,我尝试过:
dict = {}
number_of_df= 0
for i in range(df.shape[0]):
if df[i:] != df[i-1]:
number_of_df += 1
for i in range(len(number_of_df)):
d['t' + str(i)] = df.shift(i).add_suffix('_t' + str(i))
用于复制行的值,直到行中的第一个值与前面的值不同:
for key in dict:
while df[i:] == df[i-1:]:
df[key].append= df2.loc[df1.index[i]] = df1.iloc[i]
df[key].to_csv('file'+str(key)+'.csv', index=False)
我希望它为每个文件创建几个CSV并以创建顺序命名。我有几个错误,首先出现“关键错误”:创建字典时仅-1,并且仅创建一个空字典,而切片时不返回错误但也不向字典写入任何内容。我还认为我可能要指出我想在字典中更改哪些行和值。
预先感谢我的英语,不是母语,还有完整的n00b。
答案 0 :(得分:0)
我想根据字符串值拆分成几个较小的 第一列的内容。
这比您想象的要容易。只需在第一列中使用groupby
,然后使用dict
+ tuple
来构建字典。您可以通过索引df.columns
选择第一列。
dct = dict(tuple(df.groupby(df.columns[0])))
如果仅 需要将每个数据帧导出到CSV文件,则不需要额外的词典费用。只需直接迭代groupby
对象:
for key, df_slice in df.groupby(df.columns[0]):
df_slice.to_csv(f'file_{key}.csv', index=False)