我有两个数据框,我想比较每个值并返回结果, 如果'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
答案 0 :(得分:0)
尝试:
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所述,如果数据帧中的值是字符串,则首先需要将它们转换为浮点型,然后像我的代码中一样进行其余操作。