python - 将一列的数据帧与具有一系列列的另一个数据帧匹配并提取列标题 - Python

标签 python pandas dataframe

所以,我有两个数据帧,我正在尝试将数据帧 1 中的“数字”列与完整数据帧 2 的内容相匹配,并提取列标题并将其用作数据帧 1 中的标签/新列.不过,正在努力为此建立一条管道。我正在使用 Python 工作。

数据框1

<表类=“s-表”> <标题> 数字 <正文> 100 101 102 103 200 201 202 203 300 301 302 303

数据框2:

<表类=“s-表”> <标题> 构造 字段 盘子 <正文> 100 200 300 101 201 301 102 202 302 103 203 303

输出[具有与数据帧 2 匹配的新列标签]:

<表类=“s-表”> <标题> 数字 标签 <正文> 100 构造 101 构造 102 构造 103 构造 200 字段 201 字段 202 字段 203 字段 300 盘子 301 盘子 302 盘子 303 盘子

最佳答案

使用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/

相关文章:

python - 将回调 uri 放入 Oauth 请求中

python - 根据行出现选择数据框结果

python - 为什么在计算欧几里德距离时,按列计算比 Pandas 中整个 DataFrame 的计算更快

r - 如何使用(data.frame)查找表中的值标签替换数据框中的数字代码?

python - 从 pandas 的字符串日期时间列中提取日期

python - 尝试在两个文件之间切换文本

python - 使用 Python 重命名 Python 代码中的变量

python - 无法访问 Queue.Empty : "AttributeError: ' function' object has no attribute 'Empty' "

python - 按日期对 Pandas Dataframe 进行排序,返回唯一日期,然后返回前两个日期的纪元时间

pandas - 如何指示 Pandas、Python 中分类列中值的计数?