首页 > 解决方案 > 通过数据框中的列表 len 复制行并将它们添加为索引

问题描述

我有一个数据框,其中一列在列表格式中包含 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]

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

有人知道我该怎么做吗?

谢谢!

标签: pythonpandaslistloopsdataframe

解决方案


您可以使用.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')

推荐阅读