python-3.x - 如何在 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 循环会花费很多时间。提前致谢。
解决方案
最好先用 NaN 替换空字符串:
df['mm'] = df.mm.replace({'': np.nan}).fillna(0).astype(int) * 2
推荐阅读
- ruby-on-rails - Rails 5 从外部 API 设置 current_user
- python - 如何合并共享相同指定索引条目的熊猫数据框中的行?
- android - 在 Android Studio 中使用 FAB 时出现 style.xml 错误
- sql - 下面的代码如何被SQL注入攻击绕过登录机制
- javascript - 在反应中动态加载菜单
- r - R TensorFlow tfestimators - SVM 和随机森林如何?
- java - 是否可以在 Cloud Foundry 应用程序中下载清单文件中的 Jar--File?
- html - 我的朋友在我的网站上听不到音频,而我可以
- drupal - Drupal 从配置 URL 中删除我的模块名称
- python - Keras: what does class_weight actually try to balance?