我试图找到一种方法一次附加多个pandas数据帧,而不是使用
逐个附加它们df.append(df)
让我们说有5个大熊猫数据帧t1,t2,t3,t4,t5。我如何一次追加它们?
的等价物df = rbind(t1,t2,t3,t4,t5)
答案 0 :(得分:50)
我认为您可以使用concat
:
print pd.concat([t1, t2, t3, t4, t5])
也许你可以ignore_index
:
print pd.concat([t1, t2, t3, t4, t5], ignore_index=True)
docs中的更多信息。
答案 1 :(得分:33)
您是否只是尝试使用列表作为追加的参数?或者我错过了什么?
import numpy as np
import pandas as pd
dates = np.asarray(pd.date_range('1/1/2000', periods=8))
df1 = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
df2 = df1.copy()
df3 = df1.copy()
df = df1.append([df2, df3])
print df
答案 2 :(得分:0)
假设我们有一个主要的 Excel 文件,其中有 3 个以 p1
、p2
和 p3
命名的子表
我们可以按如下方式一起阅读所有工作表:
d = pd.read_excel('p1.xlsx',sheet_name=['p1','p2','p3'])
现在要将所有工作表合并到一个数据框中,我们可以使用以下内容:
df=pd.concat(d[frame] for frame in d.keys())
答案 3 :(得分:0)
如果每个数据框的列不同,您可以添加以追加:
#list dataframe you want to append
frame = [t1, t2, t3, t4, t5]
#new dataframe to store append result
myDataFrame = pd.DataFrame()
for df in frame:
myDataFrame = myDataFrame.append(df)
通过检查 myDataFrame 长度确保追加成功:
len(myDataFrame)
如果数据框中的所有列都相同或列差异,只要每个数据框的列数相同,您就可以使用 pd.concat(dataframe)
作为提及耶斯莱尔。
有关 append 和 concat 的更多信息,请单击以下链接: Merge, join, concatenate and compare in Pandas
答案 4 :(得分:-3)
#行明智附加
combined_data = pd.concat([t1, t2, t3, t4, t5], axis=0)
这会将一个数据帧堆叠在另一个数据帧上
#column明智地添加
combined_data = pd.concat([t1, t2, t3, t4, t5], axis=1)
这会将第二个数据框附加到第一个数据框的右侧