小编Sun*_*iss的帖子

使用pandas迭代合并数据帧

我正在尝试使用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)

python csv pandas

5
推荐指数
1
解决办法
786
查看次数

标签 统计

csv ×1

pandas ×1

python ×1