使用pandas从另一个数据框填充1个数据帧的缺失值

时间:2016-09-28 13:04:17

标签: python pandas

在填写0时需要帮助。

在下面的数据框中,我有一个“Item_Visibility”列,它有零。我需要用第二个数据帧(图像2)填充值。 2个数据帧之间的公共列是“Item_Identifier”。

提前致谢

enter image description here enter image description here

2 个答案:

答案 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