如何根据从python / pandas中的现有列派生的列表创建新列?

时间:2016-03-15 22:32:48

标签: python python-2.7 pandas dataframe

我有一个数据框,其列权限为“Name”,其中包含以下格式的字符串:“Group1name / Group2name / Group3name / Group4name”

我想根据“名称”列和“/”分隔符创建3个新列:

第1级:“Group1name”
第2级:“Group1name / Group2name”
第3级:“Group1name / Group2name / Group3name”

如何在数据框中创建这些新列?

1 个答案:

答案 0 :(得分:0)

此解决方案使用生成器表达式,它基本上是嵌套for循环。它会根据Name分隔符拆分df /列中找到的字符串。然后它将它连接在一起,但只有在连接在一起时才会获取相应列的第一个n元素。

df = pd.DataFrame({'Name': ["Group1name / Group2name / Group3name / Group4name"]})

for n in range(1, 4):  # 1, 2, 3 for column indexing and naming.
    df['col_{0}'.format(n)] = ' / '.join(group for groups in df.Name.str.split(' / ') 
                                         for group in groups[:n])

>>> df.T
                                                       0
Name   Group1name / Group2name / Group3name / Group4name
col_1                                         Group1name
col_2                            Group1name / Group2name
col_3               Group1name / Group2name / Group3name