python - 获取数据框中匹配和不匹配列数据的计数

标签 python python-3.x pandas numpy

我有两个数据框,就像, 这是输入的 csv 数据。

Document_ID OFFSET  PredictedFeature
    0         0            2000
    0         8            2000
    0         16           2200
    0         23           2200
    0         30           2200
    1          0            2100
    1          5            2100
    1          7            2100

现在我也有了输出数据

 Document_ID    OFFSET   PredictedFeature
        0         0            2000
        0         8            2100
        0         16           2100
        0         23           2100
        0         30           2200
        1          0           2000
        1          5           2000
        1          7           2100

现在,我想做的是匹配他们得到或没有得到的结果天气。

所以我做到了,

df1_inputPredictedFeature_column['new'] = df1_inputPredictedFeature_column['PredictedFeature'] == df1_predictedFeature_column['PredictedFeature']

这会添加一列,该列将告诉天气它是否与预测的特征列匹配。

现在我正在尝试的是,

输入 csv 的预测特征中共有 2 个特征,其中 2000。但在输出 csv 中,只有第一个位置是匹配的,而不是第二个位置。

所以我正在尝试获取这些数据,例如,

predictedFeatureClass  inputCsvOccured   outputcsvmatched  

 2000                        2                1

2200                         3                 1

那么,我如何获取这些数据?任何帮助都会很棒。

最佳答案

一个想法是通过 Series.viewnew 列转换为整数然后通过元组列表将列 newsizesum 聚合以指定新列名称:

df1['new'] = (df1['PredictedFeature'] == df2['PredictedFeature']).view('i1')

df = (df1.groupby("PredictedFeature")['new']
         .agg([('inputCsvOccured','size'), ('outputcsvmatched','sum')])
         .reset_index())
print (df)
   PredictedFeature  inputCsvOccured  outputcsvmatched
0              2000                2                 1
1              2100                3                 1
2              2200                3                 1

Pandas 0.25+ 解决方案:

df1['new'] = (df1['PredictedFeature'] == df2['PredictedFeature']).view('i1')

df = (df1.groupby("PredictedFeature")
         .agg(inputCsvOccured=pd.NamedAgg(column='new', aggfunc='size'),
              outputcsvmatched=pd.NamedAgg(column='new', aggfunc='sum'))
         .reset_index())

关于python - 获取数据框中匹配和不匹配列数据的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58426376/

相关文章:

python-3.x - Python 3 - 如何仅提取电子邮件正文

python - 使用 pandas 将年度格式的数据转换为财务数据

python - Pandas 使用切片和整数索引选择列

Python:我错过了什么吗?

python - SKLearn 交叉验证 : How to pass info on fold examples to my scorer function?

python-3.x - Pandas 数据阅读器

python - 当字符串中有多个逗号时,保留字符串中每个逗号后的第一个单词

python - 尝试导入 pypyodbc 模块时出现错误 'ODBC Library is not found. Is LD_LIBRARY_PATH set?'

python - 将输入存储在字典中以添加到主列表中

python - 如何创建在 python 中创建的数据的 csv 文件