Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用放大设置-更新事务DF_Python_Pandas_Dataframe_Multiple Columns_Insert Update - Fatal编程技术网

Python 使用放大设置-更新事务DF

Python 使用放大设置-更新事务DF,python,pandas,dataframe,multiple-columns,insert-update,Python,Pandas,Dataframe,Multiple Columns,Insert Update,正在寻找在数据帧上实现以下更新的方法: dfb是我想用dft事务更新的基本数据帧 任何常用索引行都应使用dft中的值进行更新 仅在dft中的索引应附加到dfb 查看文档,放大设置看起来很完美,但后来我意识到它只适用于一行。是否可以使用放大设置进行此更新,或者是否有其他推荐方法 dfb = pd.DataFrame(data={'A': [11,22,33], 'B': [44,55,66]}, index=[1,2,3]) dfb Out[70]: A B 1 11 44 2

正在寻找在数据帧上实现以下更新的方法:

  • dfb
    是我想用
    dft
    事务更新的基本数据帧
  • 任何常用索引行都应使用
    dft
    中的值进行更新
  • 仅在
    dft
    中的索引应附加到
    dfb
查看文档,放大设置看起来很完美,但后来我意识到它只适用于一行。是否可以使用放大设置进行此更新,或者是否有其他推荐方法

dfb = pd.DataFrame(data={'A': [11,22,33], 'B': [44,55,66]}, index=[1,2,3])
dfb
Out[70]: 
   A   B
1  11  44
2  22  55
3  33  66

dft = pd.DataFrame(data={'A': [0,2,3], 'B': [4,5,6]}, index=[3,4,5])
dft
Out[71]: 
   A  B
3  0  4
4  2  5
5  3  6

# Updated dfb should look like this:
dfb
Out[75]: 
    A   B
1  11  44
2  22  55
3   0   4
4   2   5
5   3   6
您可以通过以下方式使用重命名列、最后将
float
列转换为
int

另一个解决方案是通过在两个数据帧中查找相同的索引,它首先从
数据帧
dfb
开始,然后使用:

dft = dft.rename(columns={'c':'B', 'B':'A'}).combine_first(dfb).astype(int)
print (dft)
    A   B
1  11  44
2  22  55
3   0   4
4   2   5
5   3   6
dft = dft.rename(columns={'c':'B', 'B':'A'})
idx = dfb.index.intersection(dft.index)
print (idx)
Int64Index([3], dtype='int64')

dfb = dfb.drop(idx)
print (dfb)
    A   B
1  11  44
2  22  55

print (pd.concat([dfb, dft]))
    A   B
1  11  44
2  22  55
3   0   4
4   2   5
5   3   6