从函数中编写多个csv

时间:2017-02-27 01:26:31

标签: python python-3.x ipython

假设我有一个根据某个变量'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。

2 个答案:

答案 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')