简体   繁体   English

pandas 中的动态 append 数据帧

[英]Dynamically append dataframes in pandas

I want to load files from a list, calculate mean, median and standard deviation for each row of each file and then create a dataframe listing all the newly calculated fields.我想从列表中加载文件,计算每个文件每一行的平均值、中值和标准差,然后创建一个 dataframe 列出所有新计算的字段。

I have the following code:我有以下代码:

    #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)

I'm getting an error:我收到一个错误:

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

Individual dfs that are being created in the for loop look exactly how I want it but I can't concatenate them all together.在 for 循环中创建的单个 dfs 看起来完全符合我的要求,但我无法将它们全部连接在一起。

As it is you're overwriting df every time through the loop.因为它是你每次通过循环覆盖df
Instead collect the DataFrames in a list, then concatenate that list together.而是将 DataFrames 收集到一个列表中,然后将该列表连接在一起。

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)

Change this line更改此行

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

to

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

should work.. do let me know in any case pls应该工作..无论如何请让我知道

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM