有条件地在数据框中填充一个值

时间:2019-12-15 07:30:38

标签: python pandas dataframe

我在数据框中有一列,我需要利用它来填充另一列。我在此列中可能有四个值-E,H,N和P。每个不同的值都将用于填充“大小”列中的值。

我的数据示例如下:

Type    H Data      P Data      Size
 H        1           0.5
 H       1.5           1
 E        -            -
 N        -            -
 P       0.5          0.5
 E        -            -

我想填写“大小”列的每一行。

对于“ E”类型,我想填写“ 2”。对于“ N”类型,我想填写“-”

对于“ H”和“ P”类型,我想填写一个从相应数据帧(“ H数据”或“ P数据”)中获取的值。

预计我的结果将如下所示:

Type    H Data      P Data      Size
 H        1           0.5        1
 H       1.5           1        1.5
 E        -            -         2
 N        -            -         -
 P       0.5          0.5       0.5
 E        -            -         2

做到这一点的最佳方法是什么?目前,我在Excel中有一个可以完成此操作的代码,但是我不确定如何在Python中执行此操作。在Excel中,我嵌套了IF条语句。最好是在Python中创建循环,还是在Pandas或NumPy中内置函数可以完成此任务?预先感谢!

1 个答案:

答案 0 :(得分:4)

尝试使用:

df['Size'] = df['H Data'].fillna(df['P Data'])
df.loc[df['Type'].eq('E'), 'Size'] = 2
print(df)

输出:

  Type H Data P Data Size
0    H      1    0.5    1
1    H    1.5      1  1.5
2    E      -      -    2
3    N      -      -    -
4    P    0.5    0.5  0.5
5    E      -      -    2