我有几个结构相同的 csv 文件,我想要
- 以相同的顺序将文件分配给数据框名称:
1.csv -> data1, 2.csv ->data2
- 并以相同的方式分配列:
delta1 = data1["C"] - data1["A"]
我想把它放到for循环中,看起来像这样:
for i in range (1, 22):
data%i = pd.read_csv('CSV/' + str(i) + '.csv')
delta%i = data%i["C"] - data%i["A"]
# And I want to compare the 2 series from dataframe.column to find a set intersection
set(data1[data1.delta1 > 0].column) & set(data2[data2.delta2 == 0].column)
set(data2[data2.delta2 > 0].column) & set(data3[data3.delta3 == 0].column)
但是 for 循环中的语法肯定是错误的,有没有更好的编码方式,以便在循环之后,我可以得到:
data1, data2, data3
...
相应的:
delta1, delta2, delta3
...
最佳答案
与字典相反,您可以使用原生 pandas 函数做任何事情。
首先将您的 csvs 读入列表:
df_list = []
for i in range(1, 22):
df_list.append(pd.read_csv("{i}.csv".format(i)))
现在连接它们:
df = pd.concat(df_list, keys=range(1,22))
现在您的数据框 df
已使用您加载的文件的键索引。
例如 df.loc[1]
将从文件 1.csv
您现在可以通过一次操作设置增量:
df["delta"] = df["C"] - df["A"]
您也可以使用 DataFrame.loc
操作访问这些增量,如下所示:
df.loc[2,"delta"]
此方法更适合 pandas
,并且可以更好地扩展到更大的数据集。
关于python - 将多个 CSV 文件读取到 DataFrames 并以其原始文件名命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034425/