Pandas基于str contains从另一列创建新列w/值

2024-06-06 17:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧。一个有多个列,另一个只有一个列。所以我需要的是基于列的部分str进行连接。例如:

df1

| Name     |       Classification       |
| -------- | -------------------------- |
| A        | Transport/Bicycle/Mountain |
| B        | Transport/City/Bus         |
| C        | Transport/Taxi/City        |
| D        | Transport/City/Uber        |
| E        | Transport/Mountain/Jeep    |

df2



| Category |
| -------- | 
| Mountain |
| City     | 

正如您所看到的,分类列上的顺序没有很好地定义

可导出的输出

| Name     |       Classification       | Category  |
| -------- | -------------------------- |-----------|
| A        | Transport/Bicycle/Mountain | Mountain  |
| B        | Transport/City/Bus         | City      |
| C        | Transport/Taxi/City        | City      |
| D        | Transport/City/Uber        | City      |
| E        | Transport/Mountain/Jeep    | Mountain  |

我被困在这上面了。有什么想法吗

非常感谢


Tags: 数据namecitytransportdf1classificationdf2taxi
2条回答

您可以尝试以下方法:

dff={"ne":[]}

for x in df1["Classification"]:
    if a in df2 and a in x:
        dff["ne"].append(a)
df1["Category"]=dff["ne"]

df1将看起来像您想要的输出

此实现实现实现了以下功能:

def get_cat(val):
    for cat in df2['Category']:
        if cat in val:
            return cat
    return None

df['Category'] = df['Classification'].apply(get_cat)

注意:正如@Justin Ezequiel在评论中指出的,您没有指定当分类中存在山地和城市时应该做什么。当前实现使用匹配的第一个类别

相关问题 更多 >