我对Python比较陌生,对Pandas来说是完全新手,所以如果这很简单,我很抱歉。我有一个数据框,我想对特定列中的所有元素进行操作,但仅当具有相同索引的不同列满足特定条件时才会操作。
float_col int_col str_col
0 0.1 1 a
1 0.2 2 b
2 0.2 6 None
3 10.1 8 c
4 NaN -1 a
例如,如果float_col中的值大于5,我想将in_col中的值(在同一行中)乘以2.我猜我应该使用{{1}中的一个} map
或apply
函数,但我不确定哪个或如何。
答案 0 :(得分:3)
可能有更优雅的方法可以执行此操作,但是一旦您了解了如何使用loc
之类的内容来获取数据集的特定子集,就可以这样做:
df.loc[df['float_col'] > 5, 'int_col'] = df.loc[df['float_col'] > 5, 'int_col'] * 2
您也可以更简洁地执行此操作,因为pandas
足够聪明,可以根据数据框的索引匹配结果,并且只使用df['int_col'] * 2
表达式中的相关数据:
df.loc[df['float_col'] > 5, 'int_col'] = df['int_col'] * 2