在填写0时需要帮助。
在下面的数据框中,我有一个“Item_Visibility”列,它有零。我需要用第二个数据帧(图像2)填充值。 2个数据帧之间的公共列是“Item_Identifier”。
提前致谢
答案 0 :(得分:2)
试试这个:
import pandas as pd
import numpy as np
df = pd.DataFrame({"A":["a", "b", "c", "d", "e"], "B":[1, 2, 0, 0, 0]})
s = pd.Series([10, 20, 30, 40], index=["a", "b", "c", "d"])
mask = df["B"] == 0
df.loc[mask, "B"] = s[df.loc[mask, "A"]].values
DF:
A B
0 a 1
1 b 2
2 c 0
3 d 0
4 e 0
S:
a 10
b 20
c 30
d 40
dtype: int64
输出:
A B
0 a 1.0
1 b 2.0
2 c 30.0
3 d 40.0
4 e NaN
答案 1 :(得分:1)
我认为你可以mask
使用map
Series
https://mledoze.github.io/countries/进行策划:
print (df1)
a b c d
0 FDA15 9.30 Low Fat 0.016
1 FDX07 19.20 Regular 0.000
2 NCD19 8.93 Low Fat 0.000
3 FDP10 NaN Low Fat 0.127
print (df2)
e d
0 FDW59 0.0202
1 FDX07 0.0178
df1.d = df1.d.mask(df1.d == 0, df1.a.map(df2.set_index('e')['d']))
print (df1)
a b c d
0 FDA15 9.30 Low Fat 0.0160
1 FDX07 19.20 Regular 0.0178
2 NCD19 8.93 Low Fat NaN
3 FDP10 NaN Low Fat 0.1270