假设我有一个根据某个变量'name'创建pd.DataFrame的函数:
def function(name):
...
...
...
return(DataFrame(name)) #parenthesis
#here only to show that the DataFrame will be
#different when a different name is given as input.
我的问题是:如何为'name'的每个可能值编写一个函数来编写.csv(具有唯一名称)?
例如,'name'可能属于列表:
example=['Ben','Steve','Mary']
将输出3个不同的.csv:Ben.csv,Steve.csv,Mary.csv。
答案 0 :(得分:2)
这似乎就是你要找的东西:
import pandas as pd
df = pd.DataFrame({'name': ['Ben','Steve','Mary','Ben','Steve','Mary'], 'value': [1,2,3,4,5,6]})
def write_custom_csv(name):
filtered = df[df['name'] == name]
filtered.to_csv(name + '.csv')
您只需在函数中传递name
的任何名称,该函数将根据传递的名称过滤名为pandas.DataFrame
的全局df
。然后将“已过滤”的DataFrame写入文件。
答案 1 :(得分:1)
对不起,但我不能完全确定你的问题:你想在数据框中编写一个不同的CSV和相同的数据(无论它来自你的函数),还是要获取数据框,提取名称关联的数据(即在col中),然后将其写入特定的输出CSV文件?
如果您只想获取数据帧并将其写入不同的CSV文件,那就不难了:
for name in ['Ben', 'Steve', 'Mary']:
pd.to_csv('.'.join([name, 'csv']), delimiter=',', encoding='utf-8')
如果你想从Dataframe中提取列名(从内存中,我可能是错的):
for name in ['Ben', 'Steve', 'Mary']:
user_data = df[[name]] # This will create a copy dataframe.
user_data.to_csv('.'.join([name,'csv']), delimiter=',', encoding='utf-8')