Panda 合并未按预期工作
我正在使用此代码
import pandas as pd
data = {
"Q1": [1, 2, 3, 4],
"A2_1": [1, 2, 2, 1],
"A2_2": [1, 1, 1, 1],
"A2_3": [2, 2, 1, 1],
"A2_4": [2, 2, 2, 1],
"A3_1": [10, 25, 62, 18],
"A3_2": [51, 51, 16, 17],
"A3_3": [32, 23, 71, 31],
"A3_4": [62, 52, 52, 11]
}
df = pd.DataFrame(data)
# Melt DataFrame for A2
melted_a2 = pd.melt(df, id_vars=["Q1"], value_vars=["A2_1", "A2_2", "A2_3", "A2_4"], var_name="A2", value_name="Value")
# Melt DataFrame for A3
melted_a3 = pd.melt(df, id_vars=["Q1"], value_vars=["A3_1", "A3_2", "A3_3", "A3_4"], var_name="A3", value_name="Value")
# Merge melted DataFrames on 'Q1'
result_df = pd.merge(melted_a2, melted_a3, on="Q1")
# Drop unnecessary columns
result_df.drop(columns=["A2", "A3"], inplace=True)
print(result_df)
我对输出的期望是
然而真正的输出是
代码
tmp = df.set_index('Q1')
out= (tmp.set_axis(tmp.columns.str.split('_', expand=True), axis=1)
.stack().droplevel(1).reset_index()
)
输出:
Q1 A2 A3
0 1 1 10
1 1 1 51
2 1 2 32
3 1 2 62
4 2 2 25
5 2 1 51
6 2 2 23
7 2 2 52
8 3 2 62
9 3 1 16
10 3 1 71
11 3 2 52
12 4 1 18
13 4 1 17
14 4 1 31
15 4 1 11