gpt4 book ai didi

python - 两个数据帧的 Pandas join.fillna 将所有值替换为,而不仅仅是 nan

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:00 25 4
gpt4 key购买 nike

以下代码将根据索引更新库存商品数量。包含旧库存的表 dr 包含 >1000 个值。更新后的数据框 grp1 包含已售商品的数量。我想从数据帧 dr 中减去数据帧 grp1 并更新 dr。一切都很好,直到我想用 Panda 的 join 和 fillna 将 grp1 加入到 dr 中。首先,将数据类型从 int 更改为 float,不仅将 NaN 值,而且将 notnull 值替换为 0。这是索引不匹配的问题吗?

我试图使数据类型统一,但这并没有改变任何东西。在连接两个数据帧时删除 fillna 会为所有列返回 NaN。


dr has the following format (example):

druck_pseudonym lager_nr menge_im_lager
80009359 62808 1
80009360 62809 10
80009095 62810 0
80009364 62811 11
80009365 62812 10
80008572 62814 10
80009072 62816 18
80009064 62817 13
80009061 62818 2
80008725 62819 3
80008940 62820 12


dr.dtypes
lager_nr int64
menge_im_lager int64
dtype: object

and grp1 (example):
LagerArtikelNummer1 ArtMengen1
880211066 1
80211070 1
80211072 2
80211073 2
80211082 2
80211087 4
80211091 1
80211107 2
88889272 1
88889396 1


ArtMengen1 int64
dtype: object

#update list with "nicht_erledigt"
dr_update = dr.join(grp1).fillna(0)
dr_update["menge_im_lager"] = dr_update["menge_im_lager"] - dr_update["ArtMengen1"]

这将返回:


lager_nr menge_im_lager ArtMengen1
druck_pseudonym
80009185 44402 26.0 0.0
80009184 44403 2.0 0.0
80009182 44405 16.0 0.0
80008894 44406 32.0 0.0
80008115 44407 3.0 0.0
80008974 44409 16.0 0.0
80008380 44411 4.0 0.0

dr_update.dtypes
lager_nr int64
menge_im_lager float64
ArtMengen1 float64
dtype: object

最佳答案

评论后编辑,索引为对象。

您的索引是字符串对象。您需要将它们转换为数字。使用

dr.index = pd.to_numeric(dr.index) 
grp1.index = pd.to_numeric(grp1.index)

dr.sort_index()
grp1.sort_index()

然后尝试剩下的...

您可以过滤旧库存“dr”数据框以匹配已售库存,然后减去并返回到原始过滤后的数据框。

# Filter the old stock dataframe so that you have matching index to the sold dataframe. 
# Restrict just for menge_im_lager. Then subtract the sold stock
dr.loc[dr.index.isin(grp1.index), "menge_im_lager"] = (
dr.loc[dr.index.isin(grp1.index), "menge_im_lager"] - grp1["ArtMengen1"]
)

关于python - 两个数据帧的 Pandas join.fillna 将所有值替换为,而不仅仅是 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57746348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com