我有以下代码用于导出每个"id"到一个单独的CSV文件。每个csv文件都应该以id命名。在我的例子中,我们应该有三个不同的csv文件,分别命名为23、24和25。我有下面的代码,但它给了我一个错误。谢谢。
import pandas as pd
path = "users/AR/csv files"
for (id), id in df.groupby(['id']):
group.to_csv(f'{id}.csv', directory=path, index=False)
NameError: name 'group' is not defined
<表类>id 日期 数 tbody><<tr>23 2/2/2016 24 24 2/4/2016 56 25 2/3/2016 135 23 3/4/2016 46 24 3/8/2016 176 25 3/9/2016 23 23 3/16/2016 98 24 3/13/2016 114 25 3/17/2016 43 表类>
修改:
for (id), id in df.groupby(['id']):
:
for id, group in df.groupby(['id']):
当迭代groupby对象时,您将从特定的组子数据帧(此处为group
)中获得单独的分组值(在您的示例中为id
)。id
为csv文件命名,group
df为csv文件命名。
此外,to_csv
方法中没有directory
参数。最简单的方法是在文件名字符串中包含路径,如f'users/AR/csv files/{id}.csv'
。如果您需要与操作系统无关的解决方案,您可以使用os.path
方法。
这可以通过list comps来实现:
dfs = [x.reset_index(drop=True) for _, x in df.groupby("id")]
[x.to_csv(f"users/AR/csv files/{x['id'][0]}.csv", index=False) for x in dfs]