For和If在一起-dataframe Python
如果列“y”中的值为K,则将列“x”的值乘以1e3。如果列“y”为M,则将列“x”的值乘以1e6。下面的代码将所有值乘以1e3For和If在一起-dataframe Python,python,dataframe,Python,Dataframe,如果列“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
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
数据帧:
立即输出:
您可以这样做:
df=pd.DataFrame([[1,“a”],[2,'b'],[3,'c']],columns=['a','b']))
def计算值(x):
如果x['B']=='a':
返回x['A']*10
如果x['B']=='B':
返回x['A']*20
如果x['B']=='c':
返回x['A']*30
df['calculate']=df.apply(λx:calc(x),轴=1)
打印(df)
#计算
#0 1 a 10
#1 2 b 40
#2 3 c 90
您可以根据条件根据需要调整计算。这种情况非常简单,不需要使用循环或自定义函数;可以使用一个简单的赋值:
将熊猫作为pd导入
将numpy作为np导入
d={'x':[750,5,4240220],'y':['K','M','M','K','K']}
df=pd.DataFrame(数据=d)
#以下是主要操作:
df['value\u numeric']=np.其中(df['y']='K',df['x']*1e3,df['x']*1e6)
打印(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
你能提供一个输入数据和你期望的输出吗?我已经编辑了这个问题。第x列显示了金额。我需要将其转换为相同的单位。请提供预期的单位。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。您发布的代码未运行。我们还希望您能够在错误点之前跟踪有问题的值。你对他们是如何获得这些价值观感到困惑吗?作为示例的一部分。为什么要使用
for
循环和if
检查来执行此操作,而不是使用带有条件过滤器的简单广播命令?