【发布时间】:2017-08-27 19:15:19
【问题描述】:
与 creating an empty dataframe and populating rows later 不同,我有许多需要连接的数据帧。
如果只有两个数据框,我可以这样做:
df1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
df1.append(df2, ignore_index=True)
想象一下,每次我将新文件读入 DataFrame 对象时,我都有数百万个 df 需要附加/连接。
但是当我尝试初始化一个空数据帧然后通过循环添加新数据帧时:
import pandas as pd
alldf = pd.DataFrame(, columns=list('AB'))
for filename in os.listdir(indir):
df = pd.read_csv(indir+filename, delimiter=' ')
alldf.append(df, ignore_index=True)
这将返回一个空的alldf,只有标题行,例如
alldf = pd.DataFrame(columns=list('AB'))
df1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
for df in [df1, df2]:
alldf.append(df, ignore_index=True)
【问题讨论】:
-
您是不是因为 DataFrame.append 没有就地发生(与 list.append 不同)而被绊倒?如果是这样,我敢肯定,这是一个骗局。 [而且你真的不想使用 append,你想先阅读所有内容并连接 - append 会非常慢。]
-
谢谢@DSM,有点。我本以为,直到有某种
pd.commit()像 DB =(
标签: python pandas dataframe append concat