import pandas as pd
from io import StringIO
mystr = StringIO("""beat,crimedescr
A,10851(A)VC TAKE VEH W/O OWNER
B,459 PC BURGLARY RESIDENCE
C,10851(A)VC TAKE VEH W/O OWNER
A,476 PC PASS FICTICIOUS CHECK
B,459 PC BURGLARY-UNSPECIFIED
C,530.5 PC USE PERSONAL ID INFO""")
df = pd.read_csv(mystr, header=0)
for i in df.beat.unique():
df.loc[df.beat==i].to_csv(f'{i}.csv', index=False)
我想从此数据框中导出 4 个 csv 文件,包括: 包含整个数据帧和 3 个独立文件(A、B、C)的文件。 我知道可以简单地 df.to_csv 并添加另一个 for 循环。 由于大多数情况下 df.loc[()&()..] 中的条件非常复杂,因此如何在严格的一个 for 循环中执行此操作,其中分离的导出使代码很难阅读?
最佳答案
试试这个,
for u, v in df.groupby('beat'):
v.to_csv(u+'.csv',index=False)
df.to_csv('all.csv',index=False)
编辑1:对于单个循环
flag=True
for u, v in df.groupby('beat'):
if flag:
df.to_csv('all.csv',index=False)
flag=False
v.to_csv(u+'.csv',index=False)
关于python - pandas for 循环导出文件包含所有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55255481/