如何在python中使用for循环追加数据框而不覆盖现有数据框

时间:2018-09-20 09:41:38

标签: python pandas dataframe

我有一个空的dataframe [],并且想要使用for循环附加其他数据帧而不覆盖现有数据帧,常规的append方法将覆盖现有数据帧并仅显示输出中最后添加的数据帧。

5 个答案:

答案 0 :(得分:1)

使用concat()模块中的pandas

import pandas as pd
df_new = pd.concat([df_empty, df_additional])

pandas Docs中详细了解它。

关于评论中的问题...

df = pd.DataFrame(insert columns which your to-be-appended-df has too)

for i in range(10):
    function_to_get_df_new()
    df = pd.concat([df, df_new])

答案 1 :(得分:1)

您也不能使用set

df_new = pd.concat({df_empty, df_additional})

因为无法对pandas.DataFrame个对象进行哈希处理,set需要进行哈希处理,所以这就是为什么

tuple

df_new = pd.concat((df_empty, df_additional))

他们快一点...

更新for循环:

df = pd.DataFrame(data)

for i in range(your number):
    df_new=function_to_get_df_new()
    df = pd.concat({df, df_new}) # or tuple: df = pd.concat((df, df_new))

答案 2 :(得分:0)

我认为您不需要在这里使用for循环,请尝试concat()

import pandas
result = pandas.concat([emptydf,additionaldf])

pandas.concat documentation

答案 3 :(得分:0)

让您拥有数据帧list_of_df = [df1, df2, df3]的列表。

您有空的数据框df = pd.Dataframe()

如果要将列表中的所有数据框附加到该空数据框df中:

for i in list_of_df:
    df = df.append(i)

以上循环不会更改df1, df2, df3。但是df将会改变。 请注意,执行df.append(df1)不会更改df,除非您将其分配回df,以便df = df.append(df1)

答案 4 :(得分:0)

这个问题已经很好地回答了,我的5分建议是使用 ignore_index = True 选项来获得连续的新索引,而不要重复旧索引。

import pandas as pd

df_to_append = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB')) # sample
df = pd.DataFrame()      # this is a placeholder for the destination

for i in range(3):
    df = df.append(df_to_append, ingnore_index=True)