python - 对数据框进行操作以将行转换为单独的列

标签 python python-3.x numpy dataframe

我有一个包含以下结构的数据框

    **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 过滤, reshape DataFrame.set_indexDataFrame.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

关于python - 对数据框进行操作以将行转换为单独的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56090087/

相关文章:

python - 使用discord.py重写创建即时邀请,似乎无法没有错误

python - 最常见的字符 - 用户提交的没有字典或计数器的字符串

python - Pycharm pip install 不能在代理后面工作

python - 我使用什么 scipy 统计测试来比较样本均值?

python - 使用本地 RDF 存储的 SPARQL 查询

python - 类型错误 : execute() takes from 2 to 3 positional arguments but 7 were given

python - CNN 模型比 CNN-SVM 组合模型具有更好的精度

python - 从基于列表字段的文件中获取行计数 python 3

Python3 检查 Unicode 字符是否不存在

python - numpy einsum() 可以执行外加法吗?