在熊猫中动态追加数据框

时间:2020-06-22 22:54:43

标签: python pandas for-loop concatenation

我想从列表中加载文件,为每个文件的每一行计算平均值,中位数和标准差,然后创建一个列出所有新计算字段的数据框。

我有以下代码:

    #list files to load
    file_names = ["file_1", "file_2", ...]

    #empty df
    data = pd.DataFrame()

    #for loop
    for filename in file_names:
        df = pd.read_csv(filename, index_col=False, header=0)
        mean = df.mean(axis = 1)
        median = df.median(axis = 1)
        std = df.std(axis = 1)
        df = pd.concat([mean, median, std], axis = 1, ignore_index = 1)
    data = pd.concat(df, axis=1)

我遇到错误:

TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"

在for循环中创建的单个df看起来确实符合我的要求,但是我无法将它们全部串联在一起。

2 个答案:

答案 0 :(得分:1)

就这样,您每次遍历循环都会覆盖df
而是将DataFrame收集在一个列表中,然后将该列表连接在一起。

df_list = []

#for loop
for filename in file_names:
    df = pd.read_csv(filename, index_col=False, header=0)
    mean = df.mean(axis = 1)
    median = df.median(axis = 1)
    std = df.std(axis = 1)
    df = pd.concat([mean, median, std], axis = 1, ignore_index = 1)
    df_list.append(df)

data = pd.concat(df_list, axis=1)

答案 1 :(得分:0)

更改此行

false

data = pd.concat(df, axis=1)

应该工作..无论如何请让我知道