我有 2 個輸入資料幀。
- 資料幀一:
| a1 | a2 |
|---|---|
| 一種 | C |
| 乙 | D |
| F | D |
| 一種 | D |
- 資料幀二:
| emi_1 | emi_2 |
|---|---|
| 一種 | C |
| 乙 | 升 |
| C | N |
| G | D |
我想要的輸出:我想計算 df2 中每個元素在 df1 中出現的次數:預期的輸出顯示在這張圖片中:

注意:如果您根據 IMEI 對最終資料幀進行分組,那么它將對讀者友好,因此該特定的所有值都將被分組。
uj5u.com熱心網友回復:
這是一個方法,一步一步
>>> df1
a1 a2
0 A C
1 B D
2 F D
3 A D
>>> df2
emi_1 emi_2
0 A C
1 B L
2 C N
3 G D
>>> df2_melted = df2.melt(var_name="IMEI", value_name="Values")
>>> df2_melted
IMEI Values
0 emi_1 A
1 emi_1 B
2 emi_1 C
3 emi_1 G
4 emi_2 C
5 emi_2 L
6 emi_2 N
7 emi_2 D
>>> df1_counts = df1.apply(pd.Series.value_counts)
>>> df1_counts
a1 a2
A 2.0 NaN
B 1.0 NaN
C NaN 1.0
D NaN 3.0
F 1.0 NaN
>>> final = (
df2_melted.merge(df1_counts, how="left",
left_on="Values", right_index=True)
.fillna(0)
.astype({"a1":int, "a2":int})
)
>>> final
IMEI Values a1 a2
0 emi_1 A 2 0
1 emi_1 B 1 0
2 emi_1 C 0 1
3 emi_1 G 0 0
4 emi_2 C 0 1
5 emi_2 L 0 0
6 emi_2 N 0 0
7 emi_2 D 0 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333429.html
上一篇:結合2個dfs的最佳方式
下一篇:用相同條件替換多個列的現有列
