通过数据框中的列表 len 复制行并将它们添加为索引

Posted

技术标签:

【中文标题】通过数据框中的列表 len 复制行并将它们添加为索引【英文标题】:Duplicate rows by list len in dataframe and add them as index 【发布时间】:2020-08-30 16:47:15 【问题描述】:

我有一个数据框,其中一列在列表格式中包含 2 个或更多元素,如下所示:

                     Email                           Country
0              john@gmail.com                    [Czech Republic, Singapore, United Kingdom]
1             Davies2@gmeail.com                 [Singapore, United Kingdom]   
2              SooEng@gmail.com                  [United Kingdom, Czech Republic]

我需要执行以下操作: - 在“国家/地区”中按列表长度复制行数(例如,第一行将被复制两次) - 对于每一行,我需要将列表元素之一作为索引(例如,其中一个是捷克***,另一行是新加坡,另一行是英国作为索引)。

有人知道我该怎么做吗?

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用.explode() 来“复制”行:

import pandas as pd

df = pd.DataFrame([['john@gmail.com', ['Czech Republic', 'Singapore', 'United Kingdom']],
                   ['Davies2@gmeail.com', ['Singapore', 'United Kingdom']],
                   ['SooEng@gmail.com', ['United Kingdom', 'Czech Republic']]
                  ], columns = ['Email', 'Country'])
df.explode('Country')

结果:

                Email         Country
0      john@gmail.com  Czech Republic
0      john@gmail.com       Singapore
0      john@gmail.com  United Kingdom
1  Davies2@gmeail.com       Singapore
1  Davies2@gmeail.com  United Kingdom
2    SooEng@gmail.com  United Kingdom
2    SooEng@gmail.com  Czech Republic

设置索引使用:

df.explode('Country').set_index('Country')

【讨论】:

您好 Rene,感谢您的快速回复!我收到数据框没有属性“explode”的错误 你用的是什么版本的熊猫? 是的,刚刚检查我需要更新 Pandas 版本,谢谢!

以上是关于通过数据框中的列表 len 复制行并将它们添加为索引的主要内容,如果未能解决你的问题,请参考以下文章

熊猫数据框中的行排序和聚合

将 pandas 数据框中的一些行添加到下一个,然后删除它们

使用 for 语句从数据框中附加列表

如果值在列表中,则 Pandas 数据框中的重复行

在使用数字列表搜索列后返回数据框中的所有行 - Python/Pandas

如何在字符串中查找多个子字符串并将它们添加到列表中? [复制]