熊猫修改部分,然后重新组合

时间:2019-07-10 14:44:06

标签: python pandas

我一直在用Pandas修改Excel文档。我只需要一次处理一小部分,然后将它们分成一个单独的DataFrame,然后在修改后重新组合为整体,这似乎是最好的解决方案。这可行吗?我已经尝试过使用merge()和concat()的几个选项,但是它们似乎并没有给我我想要的结果。

如前所述,我尝试使用merge()函数将它们与较大的表重新组合在一起,但是我只是遇到了内存错误,并且当我使用较小的数据帧对其进行测试时,未维护行。

这是我要做什么的一个小例子:

import pandas as pd

df1 = pd.DataFrame({'A':[1,2,3,5,6],'B':[3,10,11,13,324],'C':[64,'','' ,'','' ],'D':[32,45,67,80,100]})#example df
print(df1)
df2= df1[['B','C']]#section taken
df2.at[2,'B'] = 1#modify area
print(df2)
df1 = df1.merge(df2)#merge dataframes
print(df1)

输出:


   A    B   C    D
0  1    3  64   32
1  2   10       45
2  3   11       67
3  5   13       80
4  6  324      100
     B   C
0    3  64
1   10    
2    1    
3   13    
4  324    
   A    B   C    D
0  1    3  64   32
1  2   10       45
2  5   13       80
3  6  324      100

我想看的


   A    B   C    D
0  1    3  64   32
1  2   10       45
2  3   11       67
3  5   13       80
4  6  324      100
     B   C
0    3  64
1   10    
2    1    
3   13    
4  324    
   A    B   C    D
0  1    3  64   32
1  2   10       45
2  3    1       67
3  5   13       80
4  6  324      100

正如我之前所说,在我的实际代码中,如果由于数据帧的大小而尝试这样做,只会遇到内存错误

1 个答案:

答案 0 :(得分:0)

这里不需要合并,您只需将值从df2重新分配到df1

...
df1.loc[df2.index, df2.columns] = df2 #recover changes into original dataframe
print(df1)

给予预期:

   A    B   C    D
0  1    3  64   32
1  2   10       45
2  3    1       67
3  5   13       80
4  6  324      100

df1.update(df2)给出相同的结果(感谢Quang Hoang的准确性)