【发布时间】:2016-07-31 07:00:46
【问题描述】:
我正在尝试找到一种方法来一次附加多个熊猫数据帧,而不是使用
逐个附加它们df.append(df)
假设有 5 个 pandas 数据框 t1、t2、t3、t4、t5。我如何一次附加它们?相当于
df = rbind(t1,t2,t3,t4,t5)
【问题讨论】:
我正在尝试找到一种方法来一次附加多个熊猫数据帧,而不是使用
逐个附加它们df.append(df)
假设有 5 个 pandas 数据框 t1、t2、t3、t4、t5。我如何一次附加它们?相当于
df = rbind(t1,t2,t3,t4,t5)
【问题讨论】:
您是否尝试过使用列表作为附加参数?还是我错过了什么?
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
【讨论】:
pd.DataFrame().append([df1,df2, df3]).
假设我们有一个主 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())
【讨论】:
如果每个数据框的列不同,您可以添加为追加:
#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)
如果数据框中的所有列都相同,或者每个数据框的列不同,只要每个数据框的列数相同,您就可以使用 jezrael 提到的pd.concat(dataframe)。
有关追加和连接的更多信息,请单击下面的链接: Merge, join, concatenate and compare in Pandas
【讨论】:
#逐行追加
combined_data = pd.concat([t1, t2, t3, t4, t5], axis=0)
这会将一个数据帧堆叠在另一个数据帧上
#column 明智附加
combined_data = pd.concat([t1, t2, t3, t4, t5], axis=1)
这将在第一个数据帧的右侧附加第二个数据帧
【讨论】: