【发布时间】:2020-05-26 21:11:00
【问题描述】:
我有两个数据框。第二个数据帧是从第一个数据帧派生的。我更新了第二个数据框中的一列,然后我想将更新后的值放回第一个数据框中。我试过“合并”,但它给了我两列后缀“_x”和“_y”
import pandas
lotQtyQueryForDF = pandas.read_sql_query(refreshQuery,conForInfo)
dataFrameOfLots = pandas.DataFrame(lotQtyQueryForDF,columns=['Customer','Stage','ProdType','Brand','ProdName','Size','Strength','Lot','PackedOn','Qty','Available'])
dataFrameOfLots['Available']=dataFrameOfLots["Available"].fillna(dataFrameOfLots['Qty'])
#inserting columns
dataFrameOfLots['QtyInTransaction']=0
dataFrameOfLots['IndexCol'] = range(1, len(dataFrameOfLots) + 1)
dataFrameFiltered=dataFrameOfLots.query('Brand=="XYZ" & Customer=="ABC"')
dataFrameFiltered.loc[:,'Qty in transaction']=34
dataFrameFiltered2=dataFrameFiltered[['Qty in transaction','IndexCol']].copy()
dataFrameOfLots.merge(dataFrameFiltered2,on='IndexCol',how='outer')
输入数据集:
Customer Stage ProdType Brand ProdName Size Strength Lot PackedOn Qty Available
DEF A Bulk YYY Test Test Weak 1 20200101 10 5
ABC A Bulk XYZ Test Test Weak 1 20200101 10 5
GHI A Bulk YTY Test Test Weak 1 20200101 10 5
ABC B RAW XYZ Test Test Weak 1 20200101 10 5
实际输出:
Customer Stage ProdType Brand ProdName Size Strength Lot PackedOn Qty Available QtyInTransaction_x IndexCol QtyInTransaction_y
DEF A Bulk YYY Test Test Weak 1 20200101 10 5 0 1 0
ABC A Bulk XYZ Test Test Weak 1 20200101 10 5 0 2 34
GHI A Bulk YTY Test Test Weak 1 20200101 10 5 0 3 0
ABC B RAW XYZ Test Test Weak 1 20200101 10 5 0 4 34
预期输出:
Customer Stage ProdType Brand ProdName Size Strength Lot PackedOn Qty Available IndexCol QtyInTransaction
DEF A Bulk YYY Test Test Weak 1 20200101 10 5 1 0
ABC A Bulk XYZ Test Test Weak 1 20200101 10 5 2 34
GHI A Bulk YTY Test Test Weak 1 20200101 10 5 3 0
ABC B RAW XYZ Test Test Weak 1 20200101 10 5 4 34
查询是正确的方法吗? 我将如何合并以便只显示一列?
谢谢
【问题讨论】:
-
能否请您提供输入数据集。只有一个 sql 查询,我们无法读取您的数据库
-
添加了输入数据集
标签: python pandas dataframe join merge