首页 > 解决方案 > 如何在 np.where 中更改 dtype 和应用数学计算?

问题描述

我有这样的数据框

df = pd.DataFrame()
df['yy'] = [2012,2011,2010]
df['mm'] = ['10','','8']

    yy      mm
0   2012    10
1   2011    
2   2010    8

我想将“mm”列中的值乘以 2。但是该列上的所有值都是字符串。我用 np.where 尝试如下:

df['X'] = np.where(df['mm']!='',df['mm'].astype(int) * 2,'')

但是它不起作用并给出如下错误:ValueError:int()的无效文字,基数为10:''。
从错误中可以清楚地看出 where 中的第一个过滤器在这里不起作用,并且它在所有值上应用 df['mm'].astype(int) 因此对于空字符串值''失败。

谁能建议另一种方法来实现这一目标?我不想使用 for 循环,因为 y 实际 df 太大,for 循环会花费很多时间。提前致谢。

标签: python-3.xdataframenumpy

解决方案


最好先用 NaN 替换空字符串:

df['mm'] = df.mm.replace({'': np.nan}).fillna(0).astype(int) * 2

推荐阅读