我在数据框中有一列,我需要利用它来填充另一列。我在此列中可能有四个值-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中内置函数可以完成此任务?预先感谢!
答案 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