python - 来自包含列表的两列的 Pandas 元组列表
问题描述
我有一个像这样的熊猫数据框,其中device_names
和device_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
适用于普通列表但不适用于熊猫系列的琐碎。我怎样才能在熊猫中做到这一点?
解决方案
你可以这样做:
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)]
推荐阅读
- jquery - 将 jQuery POST 发送到 ASP.NET Web API
- javascript - 使用 JavaScript 和 Google Tag Manger 更改 html 内容
- c# - Asp.net 图表控件消失
- android - 如何安全删除字符串资源?
- symfony - Doctrine ORM many-to-many find all by taglist
- sql - 如何从 SQL/PLSQL 中的特定周数获取日期?
- c# - 如果结构可以实现 IDisposable,为什么它们不能有析构函数?
- angular - Angular 5:在 ng build --prod 之后没有出现 css 并且无法转到其他页面
- javascript - 使用输入绑定更新类对象
- javascript - Webpack 尝试从子目录加载 build.js