【问题标题】:Saving csv files dynamically with python使用python动态保存csv文件
【发布时间】:2017-10-31 20:35:50
【问题描述】:

我有 3 个数据集需要读取,然后对某些列进行一些计算并创建一个新列,最后我必须将新列保存在一个新的 csv 文件中。我不知道如何动态地执行它,因为在每次迭代中我需要用不同的名称保存。例如下面的代码不起作用。

df.to_csv("./dataset/file'+i+'.csv',index=False) 

而 i 是我循环中的迭代次数。

【问题讨论】:

  • 怎么不行?
  • 这行得通吗? df.to_csv("./dataset/file'+str(i)+'.csv',index=False) ?
  • @AlterNative Mode 应该是w... 否则将文件名传递给to_csv,pandas 会自动创建它。

标签: python pandas csv


【解决方案1】:

参考我的answer类似的问题,

这是pandas 的解决方案。假设csv的内容如下:

Name, Age, Gender
John, 20, Male
Jack, 22, Male
Jill, 18, Female

而我的代码如下:

import pandas as pd
df = pd.read_csv("mock_data.csv")

for index, row in df.iterrows():
    file_name = row['Name']+".csv"  #Change the column name accordingly
    pd.DataFrame(row).T.to_csv(file_name, index=None)

这将根据“名称”列(即 Jack、John 和 Jill)的值创建文件名,以生成三个文件 John.csvJack.csvJill.csvJohn.csv的内容如下:

Name    | Age   |  Gender |
---------------------------
John    | 20    |  Male   |

Jack.csv的内容如下:

Name    | Age   |  Gender |
---------------------------
Jack    | 22    |  Male   |

Jill.csv的内容如下:

Name    | Age   |  Gender |
---------------------------
Jill    | 20    |  Female   |

P.S:如果你不想要标题,只需在调用.to_csv() 函数时添加header = None。例如:

pd.DataFrame(row).T.to_csv(file_name, index=None, Header=None)

提示是使用file_name 作为在传递给to_csv() 函数之前(或同时)从任何列或输入生成的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多