如何比较两个数据帧并返回结果?

时间:2019-04-17 16:04:24

标签: python pandas

我有两个数据框,我想比较每个值并返回结果, 如果'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

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所述,如果数据帧中的值是字符串,则首先需要将它们转换为浮点型,然后像我的代码中一样进行其余操作。