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