【发布时间】:2019-07-17 00:30:42
【问题描述】:
我对 Python 比较陌生(我的大部分经验都是在 SAS 方面),所以请多多包涵。
我正在尝试从现有数据集创建多个 CSV,并根据定义的列表导出它们。 CSV 的命名应根据相应的列表值动态命名。
我已经尝试了很多东西 - 主要是在黑暗中刺伤 - 没有任何效果。见下面的代码
cc = ['AD-1','AD-2','AD-3'] #the list I want it to cycle through
for index in range(len(cc)):
df1_cc = df[df['charge'].isin(cc)] #df is predefined
#set "charge" as the index variable so you can aggregate on it
df1_cc = df1_cc.set_index('charge')
df1_cc
#sum up values based on individual values of 'charge'
table1_cc = df1_cc.sum(level='charge')
table1_cc
#output to CSV
table1_cc.to_csv(r"C:\Users\etc\table1_"+cc+".csv")
注意,cc(AD-1、AD-2 和 AD-3)中的值包含在 'charge' 等中
我得到的唯一错误是:
table1_cc.to_csv(r"C:\Users\etc\"+cc+".csv")
我得到的错误是: TypeError:只能将str(不是“list”)连接到str
输出应该是 3 个文件:table1_AD-1.csv、table1_AD-2.csv 和 table1_AD-3.csv,每个文件都应该包含每个单独的总和值(同样,该部分有效。真正的问题是循环并将 cc 中每个单独值的输出导出到 CSV)。
感谢任何帮助!
【问题讨论】:
-
欢迎使用 Python!重新处理循环的“惯用”方法是直接在列表中使用“in”运算符 - cc.例如:
for name_stub in cc:然后在需要的地方使用name_stub。这将是完整的“pythonista”风格......但也可以尝试按照下面的建议进行枚举,以便在循环内为您提供“`”风格的递增计数器!
标签: python pandas for-loop export-to-csv