python pandas - 将列除以另一列
Posted
技术标签:
【中文标题】python pandas - 将列除以另一列【英文标题】:python pandas - dividing column by another column 【发布时间】:2016-05-28 03:33:54 【问题描述】:我正在尝试向我的DataFrame
添加一列,这是其他两列相除的产物,如下所示:
df['$/hour'] = df['$']/df['hours']
这工作正常,但如果['hours']
中的值小于1
,那么['$/hour']
的值大于['$']
中的值,这不是我想要的。
有没有办法控制操作,如果['hours'] < 1
然后df['$/hour'] = df['$']
?
【问题讨论】:
【参考方案1】:你可以使用numpy.where
:
print df
hours $
0 0 8
1 0 9
2 0 9
3 3 6
4 6 4
5 3 7
6 5 5
7 10 1
8 9 3
9 3 6
10 5 4
11 5 7
df['$/hour'] = np.where(df['hours'] < 1, df['hours'], df['$']/df['hours'])
print df
hours $ $/hour
0 0 8 0.000000
1 0 9 0.000000
2 0 9 0.000000
3 3 6 2.000000
4 6 4 0.666667
5 3 7 2.333333
6 5 5 1.000000
7 10 1 0.100000
8 9 3 0.333333
9 3 6 2.000000
10 5 4 0.800000
11 5 7 1.400000
【讨论】:
【参考方案2】:df['$/hour'] = df.apply(lambda x: x['$'] if x['$'] < 1 else x['$']/x['hours'], axis=1)
【讨论】:
【参考方案3】:您还可以使用DataFrame.loc
过滤和选择要设置的索引:
df['$/hour'].loc[df['hours']>=1] = df['$']/df['hours']
df['$/hour'].loc[df['hours']<1] = df['$']
【讨论】:
以上是关于python pandas - 将列除以另一列的主要内容,如果未能解决你的问题,请参考以下文章
如何对一列执行 pandas groupby 操作,但将另一列保留在结果数据框中