python - 来自另一个数据框的映射值

标签 python pandas mapping

我有一个数据框:

    TagID   Genre
0   0       rock
1   1       pop
2   2       favorites
3   3       alternative
4   4       love

和数据框b:

    Tags
0   154
1   20 35 40 65

我想要这样的结果:

  Genre
0 wjlb-fm
1 chill, rnb, loved, hip hop 

最佳答案

在加入第一个数据框之前展开你的 Tags 列:

df2['Genre'] = (df2['Tags'].str.split().explode().astype(df1['TagID'].dtype)
                           .map(df1.set_index('TagID')['Genre'])
                           .groupby(level=0).agg(', '.join))
print(df2)

# Output
    Tags                 Genre
0      3           alternative
1  1 4 2  pop, love, favorites

一步一步:

# 1. Explode your column
>>> out = df2['Tags'].str.split().explode().astype(df1['TagID'].dtype)
0    3
1    1
1    4
1    2
Name: Tags, dtype: int64

# 2. Match genre by tag id
>>> out = out.map(df1.set_index('TagID')['Genre'])
0    alternative
1            pop
1           love
1      favorites
Name: Tags, dtype: object

# 3. Reshape your dataframe
>>> out = out.groupby(level=0).agg(', '.join)
0             alternative
1    pop, love, favorites
Name: Tags, dtype: object

关于python - 来自另一个数据框的映射值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72709888/

相关文章:

python - tensorflow sess.run() 真的能释放python的GIL(global interpreter look)吗?

python - 根据现有列的条件语句向 pandas 数据框添加新列

pandas - 将行中的每个值与 pandas 数据框中的其他行配对

python - 如何按多个级别的列过滤多索引数据框?

python - Pandas:通过将二维字典映射到另一个系列来创建系列

java - Dozer - 仅当目标对象和源对象具有相同的字段名称时才映射字段

python - 尝试安装 Python 音频工具时 make install 失败

python - 在 pandas 中对 groupby 内的类别值进行排序

java - Spring Webflow : How to pass a bean from a controller to a flow?(使用输入映射)

python - Python 中的副作用