Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For和If在一起-dataframe Python_Python_Dataframe - Fatal编程技术网

For和If在一起-dataframe Python

For和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

如果列“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
数据帧:

立即输出:

您可以这样做:

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
检查来执行此操作,而不是使用带有条件过滤器的简单广播命令?