gpt4 book ai didi

python - pandas 是否可以在 diff 操作中将(NULL)不存在的索引/值视为 0?

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:08 24 4
gpt4 key购买 nike

例如下面的

d1 有 d1.KRK.ANDROID == 600,而 d2 没有这样的索引。是否可以将 d2 - d1 中不存在此类索引/值视为 0?

现在操作返回 NaN。

手动定义此类索引和零值是唯一的选择吗?所以我需要让 d2-d1 的 KRK.ANDROID 为 -600,而不是 NaN。

d2=pd.DataFrame({'branch':['EKB','KRK','NB','VN'],
'worktype':['PHP','PYTHON','PYTHON','ANDROID'],
'minutes':[20, 270, 20, 20]})\
.set_index(['branch', 'worktype'])

d1=pd.DataFrame({'branch':['EKB','KRK','KRK','KRK', 'NB', 'VN'],
'worktype':['PHP','ANDROID','PYTHON','QA', 'PYTHON', 'ANDROID'],
'minutes':[20, 600, 680, 45, 120, 15]})\
.set_index(['branch', 'worktype'])

In [293]: d2
Out[293]:
minutes
branch worktype
EKB PHP 20
KRK PYTHON 270
NB PYTHON 20
VN ANDROID 20

In [294]: d1
Out[294]:
minutes
branch worktype
EKB PHP 20
KRK ANDROID 600
PYTHON 680
QA 45
NB PYTHON 120
VN ANDROID 15

In [295]: d2 - d1
Out[295]:
minutes
branch worktype
EKB PHP 0.0
KRK ANDROID NaN
PYTHON -410.0
QA NaN
NB PYTHON -100.0
VN ANDROID 5.0

最佳答案

您可以尝试重新索引:-)

d2.reindex(d1.index).fillna(0)-d1
Out[342]:
minutes
branch worktype
EKB PHP 0.0
KRK ANDROID -600.0
PYTHON -410.0
QA -45.0
NB PYTHON -100.0
VN ANDROID 5.0

给你额外的要求

if len(d2.index.labels[1])<len(d1.index.labels[1]):
print(d2.reindex(d1.index).fillna(0) - d1)
else :
print(d2 - d1.reindex(d2.index).fillna(0))

更新2

AAA=set(d1.index.tolist()+d2.index.tolist())
d1.reindex(AAA).fillna(0)-d2.reindex(AAA).fillna(0)

关于python - pandas 是否可以在 diff 操作中将(NULL)不存在的索引/值视为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45929892/

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