[英]How add a value in a new column in a dataframe?
我必须考虑数据帧的两个不同列的值。 使用乘法然后除法计算它们并将结果放入新列。 我写这个,但它不起作用:
for x in range(len(df1)):
if df1.iloc[x,4] is not 'NaN':
number1=float(df1.iloc[x,4])
if df1.iloc[x,8] is not 'NaN':
number2=float(df1.iloc[x,8])
total=((number1*number2)/100)
df1['total number']=total
df1.head()
这是我的输出:
number1 number2 total number
0 400 90 100,0
1 35,5 50 100,0
2 678 3,4 100,0
相反,我想要这个输出:
number1 number2 total number
0 400 90 40,5
1 35,5 50 17,75
2 678 3,4 23,05
我觉得你首先需要replace
,
对.
然后施放到float
:
df['total number'] = df.number1.str.replace(',','.').astype(float) *
df.number2.str.replace(',','.').astype(float) / 100
print (df)
number1 number2 total number
0 400 90 360.000
1 35,5 50 17.750
2 678 3,4 23.052
df.number1 = df.number1.str.replace(',','.').astype(float)
df.number2 = df.number2.str.replace(',','.').astype(float)
print (df)
number1 number2
0 400.0 90.0
1 35.5 50.0
2 678.0 3.4
df['total number'] = df.number1.mul(df.number2).div(100)
print (df)
number1 number2 total number
0 400.0 90.0 360.000
1 35.5 50.0 17.750
2 678.0 3.4 23.052
如果number1
或number2
列中的值包含某些NaN
则可以使用参数fill_value
:
print (df)
number1 number2
0 400 90
1 35,5 50
2 678 3,4
3 NaN 5.2
df.number1 = df.number1.str.replace(',','.').astype(float)
df.number2 = df.number2.str.replace(',','.').astype(float)
print (df)
number1 number2
0 400.0 90.0
1 35.5 50.0
2 678.0 3.4
3 NaN 5.2
df['total number'] = df.number1.mul(df.number2, fill_value=1).div(100)
print (df)
number1 number2 total number
0 400.0 90.0 360.000
1 35.5 50.0 17.750
2 678.0 3.4 23.052
3 NaN 5.2 0.052
df['total number'] = df.number1.mul(df.number2, fill_value=0).div(100)
print (df)
number1 number2 total number
0 400.0 90.0 360.000
1 35.5 50.0 17.750
2 678.0 3.4 23.052
3 NaN 5.2 0.000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.