亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取數據框中匹配和不匹配列數據的計數

獲取數據框中匹配和不匹配列數據的計數

精慕HU 2022-06-28 10:13:30
我有兩個類似的數據框,這是輸入的 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']這會添加一列來告訴天氣它是否與預測特征列匹配?,F在我正在嘗試的是,共有 2 個特征,其中 2000 在輸入 csv 的預測特征中。但在輸出 csv 中,它僅排在第一位,而不是排在第二位。所以我正在嘗試獲取這些數據,例如,predictedFeatureClass  inputCsvOccured   outputcsvmatched   2000                        2                12200                         3                 1那么,我將如何獲得這些數據?任何幫助都會很棒。
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

您可以使用 groupby 來完成,如下所示


df1_inputPredictedFeature_column = pd.DataFrame([['0', '0', '2000'], ['0', '8', '2000'], ['0', '16', '2200'], ['0', '23', '2200'], ['0', '30', '2200'], ['1', '0', '2100'], ['1', '5', '2100'], ['1', '7', '2100']], columns=('Document_ID', 'OFFSET', 'PredictedFeature'))

df1_predictedFeature_column = pd.DataFrame([['0', '0', '2000'], ['0', '8', '2100'], ['0', '16', '2100'], ['0', '23', '2100'], ['0', '30', '2200'], ['1', '0', '2000'], ['1', '5', '2000'], ['1', '7', '2100']], columns=('Document_ID', 'OFFSET', 'PredictedFeature'))


df1_inputPredictedFeature_column['new'] = (df1_inputPredictedFeature_column['PredictedFeature'] == df1_predictedFeature_column['PredictedFeature']).astype(np.int)


result = df1_inputPredictedFeature_column.groupby("PredictedFeature").agg({"PredictedFeature":"count", "new":np.sum})


result.columns = ["inputCsvOccured", "outputcsvmatched"]

result.index.name = "predictedFeatureClass"


result.reset_index(inplace=True)

print(result)

結果


predictedFeatureClass  inputCsvOccured  outputcsvmatched

0                  2000                2                 1

1                  2100                3                 1

2                  2200                3                 1


查看完整回答
反對 回復 2022-06-28
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

一個想法是通過元組列表將new列轉換為整數,Series.view然后通過元組列表聚合列new以指定新列名:sizesum


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

熊貓 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())


查看完整回答
反對 回復 2022-06-28
  • 2 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號