python - 将多个 CSV 文件读取到 DataFrames 并以其原始文件名命名

标签 python pandas

我有几个结构相同的 csv 文件,我想要

  1. 以相同的顺序将文件分配给数据框名称: 1.csv -> data1, 2.csv ->data2
  2. 并以相同的方式分配列: 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/

相关文章:

python - 从 DataFrame 中减去一个 Series,同时保持 DataFrame 结构不变

python - pandas 顺序遍历中的 groupby 操作

python / Pandas : Find matching values from two dataframes and return third value

python: re.sub 的替换函数不接受额外的参数——如何避免全局变量?

python - 使用滚动窗口从数据帧创建 "buffer"矩阵?

python - 如何使用 Xpath (lxml) 从多个标签中提取文本?

python - 制作具有多索引值的字典

python - 计算 Pandas 中组内列的百分比变化

python - 如何使枢轴点保持两倍高度?

python - 如何从我的 AJAX 帖子获取数据到我的 Django View ?