python - 对数据框进行操作以将行转换为单独的列
问题描述
我有一个包含以下结构的数据框
**Email MAC**
email_1@mail.com AA:AA:AA:AA:A1
email_1@mail.com AA:AA:AA:AA:A5
email_1@mail.com PP:PP:PP:PP:P5
email_1@mail.com PP:PP:PP:PP:P6
email_2@mail.com AA:AA:AA:AA:A2
email_2@mail.com AA:AA:AA:AA:A9
我必须让他们安顿下来
**Email MAC1 MAC2 MAC3**
email_1@mail.com AA:AA:AA:AA:A1 AA:AA:AA:AA:A5 PP:PP:PP:PP:P5
email_2@mail.com AA:AA:AA:AA:A2 AA:AA:AA:AA:A9 Null
email_1@mail.com 对应的值 PP:PP:PP:PP:P6 已被丢弃,因为它超过了允许的列数(仅允许前 3 个值)。
解决方案
用于GroupBy.cumcount
计数器列,按 过滤,按boolean indexing
重塑:DataFrame.set_index
DataFrame.unstack
N = 3
g = df.groupby('Email').cumcount().add(1)
df = df[g <= N]
df1 = df.set_index(['Email',g[g<=N]])['MAC'].unstack().add_prefix('MAC').reset_index()
print (df1)
Email MAC1 MAC2 MAC3
0 email_1@mail.com AA:AA:AA:AA:A1 AA:AA:AA:AA:A5 PP:PP:PP:PP:P5
1 email_2@mail.com AA:AA:AA:AA:A2 AA:AA:AA:AA:A9 NaN
推荐阅读
- php - 如何解决 Doctrine 中的多对一关系中的重复条目?
- oracle - 外部表 - 用数字中的点替换逗号
- php - 我的代码中的函数 set_title() 有什么问题
- javascript - 从角度组件订阅扩展 .ts 文件时返回成功数据
- python - TIC TAC TOE 两个人类玩家,Python
- javascript - NodeJs API 在转换较大文件时发送空白响应
- excel - 如何根据 3 列的值有条件地格式化范围
- openssl - 在客户端升级openssl后无法解析证书
- python - 在循环中向轴添加补丁会返回 ValueError
- python - 如何获取元组的第一行及其元组中的第三项。需要帮助,有人吗?