【问题标题】: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 循环。它根据/ 分隔符拆分在df 的Name 列中找到的字符串。然后它将它们重新连接在一起,但在重新连接在一起时只将第一个 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