所以,我有两个数据帧,我正在尝试将数据帧 1 中的“数字”列与完整数据帧 2 的内容相匹配,并提取列标题并将其用作数据帧 1 中的标签/新列.不过,正在努力为此建立一条管道。我正在使用 Python 工作。
数据框1
数据框2:
输出[具有与数据帧 2 匹配的新列标签]:
最佳答案
使用melt
展平第二个数据帧,然后将其与第一个数据帧合并
:
>>> df1.merge(df2.melt(var_name='label', value_name='numbers'), on='numbers')
numbers label
0 100 construction
1 101 construction
2 102 construction
3 103 construction
4 200 fields
5 201 fields
6 202 fields
7 203 fields
8 300 plates
9 301 plates
10 302 plates
11 303 plates
融化
后,您的第二个数据框如下所示:
>>> df2.melt(var_name='label', value_name='numbers')
label numbers
0 construction 100
1 construction 101
2 construction 102
3 construction 103
4 fields 200
5 fields 201
6 fields 202
7 fields 203
8 plates 300
9 plates 301
10 plates 302
11 plates 303
使用map
的另一种方式:
df1['label'] = df1['numbers'].map(df2.melt().set_index('value').squeeze())
print(df)
# Output
numbers label
0 100 construction
1 101 construction
2 102 construction
3 103 construction
4 200 fields
5 201 fields
6 202 fields
7 203 fields
8 300 plates
9 301 plates
10 302 plates
11 303 plates
关于python - 将一列的数据帧与具有一系列列的另一个数据帧匹配并提取列标题 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70631673/