我有两个数据帧。一列有多列,另一列只有一列。所以我需要的是基于列的部分 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 |
如您所见,Classification 列上的顺序没有很好地定义。
可鄙的输出
| 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 |
我被困在这个问题上。有什么想法吗?
非常感谢。
答案 0 :(得分:2)
这个实现可以解决问题:
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 在评论中指出的那样,当分类中存在 Mountain 和 City 时,您没有指定要做什么。当前实现使用第一个匹配的 Category。
答案 1 :(得分:1)
你可以试试这个:
dff={"ne":[]}
for x in df1["Classification"]:
if a in df2 and a in x:
dff["ne"].append(a)
df1["Category"]=dff["ne"]
df1
看起来像您想要的输出。