【问题标题】:How do I create new columns based off of a list derived from an existing column in python/pandas?如何根据从 python/pandas 中现有列派生的列表创建新列?
【发布时间】:2016-03-15 22:32:47
【问题描述】:

我有一个标题为“名称”的数据框,其中包含以下格式的字符串:“Group1name / Group2name / Group3name / Group4name”

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

级别 1:“组 1 名称”
级别 2:“Group1name / Group2name”
第 3 级:“组 1 名称 / 组 2 名称 / 组 3 名称”

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

【问题讨论】:

  • 您能否提供一个您开始使用的数据框的小示例,以及您希望该数据框在修改(或创建新的数据框)后的样子?查看MCVE 以获得更详细的说明。谢谢。

标签: python python-2.7 pandas dataframe


【解决方案1】:

这个解决方案使用了一个生成器表达式,它基本上是一个嵌套的 for 循环。它根据/ 分隔符拆分在dfName 列中找到的字符串。然后它将它们重新连接在一起,但在重新连接在一起时只将第一个 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多