首页 > 解决方案 > 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

数据框: 结果数据框:

现在输出: 现在输出:

标签: pythondataframe

解决方案


这种情况很简单,不需要使用循环或自定义函数;可以使用一个简单的分配:

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

推荐阅读