首页 > 解决方案 > 来自包含列表的两列的 Pandas 元组列表

问题描述

我有一个像这样的熊猫数据框,其中device_namesdevice_models都是列表

user_id, device_names, device_models
1, ["dev_1", "dev_2"], ["mod_1", "mod_2"]
2, ["dev_1", "dev_5"], ["mod_1", "mod_5"]

我想要两个结合这两列并创建一个像这样的另一列

user_id, device_names, device_models, dev_mod
1, ["dev_1", "dev_2"], ["mod_1", "mod_2"], [("dev_1", "mod_1"), ("dev_1", "mod_2")]
2, ["dev_1", "dev_5"], ["mod_1", "mod_5"], [("dev_1", "mod_1"), ("dev_5", "mod_5")] 

我尝试过zip适用于普通列表但不适用于熊猫系列的琐碎。我怎样才能在熊猫中做到这一点?

标签: pythonpandas

解决方案


你可以这样做:

import pandas as pd
df = pd.DataFrame({'user_id': {0: 1, 1: 2},
 'device_names': {0: ["dev_1","dev_2"], 1: ["dev_1","dev_5"]},
 'device_models': {0: ["mod_1","mod_2"], 1: ["mod_1","mod_5"]}})

df['dev_mod'] = df.apply(lambda x: list(zip(x['device_names'], x['device_models'])), axis=1)

输出:

   user_id    device_names   device_models                           dev_mod
0        1  [dev_1, dev_2]  [mod_1, mod_2]  [(dev_1, mod_1), (dev_2, mod_2)]
1        2  [dev_1, dev_5]  [mod_1, mod_5]  [(dev_1, mod_1), (dev_5, mod_5)]

推荐阅读