一次追加多个 pandas 数据帧
Posted
技术标签:
【中文标题】一次追加多个 pandas 数据帧【英文标题】:Append multiple pandas data frames at once 【发布时间】:2016-07-31 07:00:46 【问题描述】:我正在尝试找到一种方法来一次附加多个熊猫数据帧,而不是使用
逐个附加它们df.append(df)
假设有 5 个 pandas 数据框 t1
、t2
、t3
、t4
、t5
。我如何一次附加它们?相当于
df = rbind(t1,t2,t3,t4,t5)
【问题讨论】:
【参考方案1】:我觉得你可以用concat
:
print pd.concat([t1, t2, t3, t4, t5])
也许你可以ignore_index
:
print pd.concat([t1, t2, t3, t4, t5], ignore_index=True)
docs 中的更多信息。
【讨论】:
如果你想让它们按某个值合并,比如说在第一列,你也可以这样做:pd.concat([t1, t2, t3, t4, t5], axis=1)
pd.concat([t1, t2, t3, t4, t5], axis=0, ignore_index=True)【参考方案2】:
您是否尝试过使用列表作为附加参数?还是我错过了什么?
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])
.
来自docs:“参数:其他:DataFrame 或 Series/dict-like 对象,或这些列表”(强调我的)【参考方案3】:
假设我们有一个主 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())
【讨论】:
【参考方案4】:如果每个数据框的列不同,您可以添加为追加:
#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
【讨论】:
【参考方案5】:#逐行追加
combined_data = pd.concat([t1, t2, t3, t4, t5], axis=0)
这会将一个数据帧堆叠在另一个数据帧上
#column 明智附加
combined_data = pd.concat([t1, t2, t3, t4, t5], axis=1)
这将在第一个数据帧的右侧附加第二个数据帧
【讨论】:
以上是关于一次追加多个 pandas 数据帧的主要内容,如果未能解决你的问题,请参考以下文章