python - For and If together - 数据框 Python
问题描述
如果“y”列中的值为 K,则将“x”列的值乘以 1e3。如果列 'y' 是 M,则将列 'x' 的值乘以 1e6。下面的代码将所有值乘以 1e3
value_list = []
for i in list(result['x'].values):
if np.where(result['y'] == 'K'):
value_list.append(float(i)*1e3)
elif np.where(result['y'] == 'M'):
value_list.append(float(i)*1e6)
else:
value_list.append(np.nan)
df['Value_numeric'] = value_list
df.head().Value_numeric
解决方案
这种情况很简单,不需要使用循环或自定义函数;可以使用一个简单的分配:
import pandas as pd
import numpy as np
d = {'x': [750, 5, 4, 240, 220], 'y': ['K', 'M', 'M', 'K', 'K']}
df = pd.DataFrame(data=d)
# here is the main operation:
df['value_numeric'] = np.where(df['y']=='K', df['x'] * 1e3, df['x'] * 1e6)
print(df)
输出
x y value_numeric
0 750 K 750000.0
1 5 M 5000000.0
2 4 M 4000000.0
3 240 K 240000.0
4 220 K 220000.0
推荐阅读
- javascript - 如何防止同一系统的多个用户生成相同的参考号
- react-native-android - 图像压缩反应原生
- google-analytics - Google Analytics 过滤器“Ashburn”在视图中不起作用
- c# - 从列表中提取值并将其保存到 C# 中的现有 Excel 工作表中
- drools - 版本从 v7.20 更改为 v7.21 后,drools 中的无限递归
- spring - Spring MVC中@ResponseBody的用例是什么
- tensorflow - 使用 Google 的 DEEPLAB V3+ 获取图像分割中每个语义类的类别概率分数
- ibm-mq - 卸载 WebSphere MFT
- ios - 无法同时满足动画约束
- c# - 如何获取 UI 元素的屏幕位置?