一次附加多个pandas数据帧

use*_*020 41 python append pandas

我试图找到一种方法一次附加多个pandas数据帧,而不是逐个附加它们

df.append(df)
Run Code Online (Sandbox Code Playgroud)

假设有5个pandas数据帧t1,t2,t3,t4,t5.我如何一次追加它们?相当于的东西

df = rbind(t1,t2,t3,t4,t5)
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 55

我想你可以用concat:

print pd.concat([t1, t2, t3, t4, t5])
Run Code Online (Sandbox Code Playgroud)

也许你可以ignore_index:

print pd.concat([t1, t2, t3, t4, t5], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

更多信息在docs中.

  • 如果您希望它们按某个值合并,可以在第一栏中说,您也可以这样做:`pd.concat([t1,t2,t3,t4,t5],axis = 1)` (2认同)

tfv*_*tfv 39

您是否只是尝试使用列表作为追加的参数?或者我错过了什么?

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
Run Code Online (Sandbox Code Playgroud)

  • 还有一个对称解决方案:“pd.DataFrame().append([df1,df2,df3])”。 (8认同)

小智 5

如果每个数据框的列不同,您可以添加 for 来追加:

#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)
Run Code Online (Sandbox Code Playgroud)

通过检查 myDataFrame 长度来确保追加成功:

len(myDataFrame)
Run Code Online (Sandbox Code Playgroud)

如果数据框中的所有列都相同或列差异,只要每个数据框的列数相同,您就可以使用pd.concat(dataframe)jezrael 提到的那样,每个数据框都不会成为问题。

有关追加和连接的更多信息,请点击下面的链接: Merge, join, concatenate and Compare in Pandas