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



我一直在用熊猫修改一个 excel 文档。我一次只需要处理小部分,将每个部分分解为单独的数据帧,然后在修改后重新组合回整体似乎是最好的解决方案。这可行吗?我已经尝试了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

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

这里不需要合并,你可以将值从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的精度(

最新更新