我正在尝试使用read_csv合并pandas中的两个数据帧.但是我的一个数据帧(在这个例子中d1)对于我的计算机来说太大了,所以我正在使用该iterator参数read_csv.
假设我有两个数据帧
d1 = pd.DataFrame({
"col1":[1,2,3,4,5,6,7,8,9],
"col2": [5,4,3,2,5,43,2,5,6],
"col3": [10,10,10,10,10,4,10,10,10]},
index=["paul", "peter", "lauren", "dave", "bill", "steve", "old-man", "bob", "tim"])
d2 = pd.DataFrame({
"yes/no": [1,0,1,0,1,1,1,0,0]},
index=["paul", "peter", "lauren", "dave", "bill", "steve", "old-man", "bob", "tim"])
Run Code Online (Sandbox Code Playgroud)
我需要合并它们,以便每行捕获每个人的所有数据,所以相当于:
pd.concat((d1,d2), axis=1,join="outer")
Run Code Online (Sandbox Code Playgroud)
但由于我无法将d1放入内存,我一直在使用read_csv(我正在使用, read_csv因为我已经处理了一个巨大的文件并将其保存为.csv格式,所以想象一下我的数据帧d1包含在文件中test.csv).
itera = pd.read_csv("test.csv",index_col="index",iterator=True,chunksize=2)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做
for i in itera:
d2 = pd.concat((d2,i), axis=1,join="outer")
Run Code Online (Sandbox Code Playgroud)
我的输出是第二个数据帧附加的第一个数据帧.
我的输出如下:
col1 col2 col3 yes/no
one NaN NaN NaN 1.0
two NaN NaN NaN 0.0
three NaN NaN …Run Code Online (Sandbox Code Playgroud)