In [37]: blue = pd.DataFrame({'A': ['foo','foo','foo','bar','bar'], 'B': [4.0, 4.0, 5.0, 8.0, 8.0]})
In [38]: blue
Out[38]:
A B
0 foo 4
1 foo 4
2 foo 5
3 bar 8
4 bar 8
In [39]: red = pd.DataFrame({'A': ['foo','foo','foo','bar','bar'], 'B': [np.nan, np.nan, np.nan, np.nan, np.nan]})
In [40]: red
Out[40]:
A B
0 foo NaN
1 foo NaN
2 foo NaN
3 bar NaN
4 bar NaN
In [41]: for df in [blue, red]:
....: df.to_csv(str(df))
....:
In [42]: !ls
A B?0 foo 4?1 foo 4?2 foo 5?3 bar 8?4 bar 8 A B?0 foo NaN?1 foo NaN?2 foo NaN?3 bar NaN?4 bar NaN postinstall.sh vagrant
Run Code Online (Sandbox Code Playgroud)
我有一些DataFrames.我遍历每个DataFrame来处理它们.在循环结束时,我想将每个DataFrame保存为以DataFrame命名的.csv文件.我知道在Python中对变量的名称进行字符串化通常很困难,但我不得不认为我在这里遗漏了一些明显的东西.DataFrames没有"name"属性,所以我该怎么办?
你可以只添加属性的DF一样,同样具有任何其他Python对象__dict__
属性,并在以后使用它:
In [2]:
blue.name = 'blue'
red.name = 'red'
df_list = [blue, red]
for df in df_list:
print(df.name)
df.to_csv(df.name + '.csv')
blue
red
Run Code Online (Sandbox Code Playgroud)
更方便的是,为方便起见,您可以存储csv名称并在以后使用它:
In [5]:
blue.name = 'blue'
blue.csv_path = 'blue.csv'
red.name = 'red'
red.csv_path = 'red.csv'
df_list = [blue, red]
for df in df_list:
print(df.name)
print(df.csv_path)
df.to_csv(df.csv_path)
blue
blue.csv
red
red.csv
Run Code Online (Sandbox Code Playgroud)
编辑 正如@Jeff指出的那样,df上的大多数操作都不会保留属性,因为返回了df的副本,并且这些属性不会被复制,所以请注意这一点.