我有两个数据框,我想比较每个值并返回一个结果,如果'dis'中的值大于'para',则结果为1,否则为0,并计算有多少个1和0:
data_6
dis
1 409.31
2 193.34
3 286.83
4 439.95
5 217.51
6 248.91
7 427.44
和
data_11
para
0 223.46
1 92.26
2 66.86
3 52.14
4 69.55
5 94.20
6 129.96
7 734.35
我尝试concat,但它给了我错误:
data_12['result'] = np.where(data_12['dis'] > data_12['para'],'1','0')
TypeError:“ str”和“ float”的实例之间不支持“>”
我期望新的data_12和data_result表将是:
dis para result
1 409.31 315.72 1
2 193.34 159.12 1
3 286.83 119.00 1
4 439.95 121.69 1
5 217.51 163.75 1
6 248.91 224.16 1
7 734.35 427.44 0
Another result table:
1 0
6 1
尝试:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'dis':[1,1,2,3]})
df2 = pd.DataFrame({'para':[0,2,2,3]})
data_12 = pd.concat([df1, df2], axis=1)
data_12['result'] = np.where(data_12['dis']>data_12['para'], 1,0)
你会得到:
dis para result
0 1 0 1
1 1 2 0
2 2 2 0
3 3 3 0
要计算0和1的出现次数:
data_result = data_12['result'].value_counts()
你会得到:
0 3
1 1
如anky_91所述,如果数据帧中的值是字符串,则首先需要将它们转换为浮点型,然后像我的代码中一样进行其余操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句