繁体   English   中英

如何从一列中提取信息以在熊猫数据框中创建新列

[英]How to extract information from one column to create a new column in a pandas data frame

我有很多 excel 文件,我想合并,但第一步,我正在尝试操作这些文件。 我的数据或多或少看起来像这样:

会议 类型 角色
议会:12
1 常设 成员
1 常设 成员
议会:13
1 常设 成员
2 常设 成员

现在,我要做的是添加一个新列,其中包含来自会话列的议会信息,同时保持所有其他信息不变。 所以我最终的excel应该是这样的:

会议 类型 角色 议会
1 常设 成员 12
1 常设 成员 12
1 常设 成员 13
2 常设 成员 13

你们能帮我理解如何解决这个问题吗?

您可以使用groupby cumsum()对每个部分组进行分组,然后只需在apply函数中重构数据以匹配您想要的最终输出:

(df.groupby(df.session.str.contains('parliament').cumsum())
   .apply(lambda s: s[1:].assign(parliament=s.head(1).session.item().strip('parliament: ')))
   .reset_index(drop=True))

  session      type    role parliament
0       1  standing  member         12
1       1  standing  member         12
2       1  standing  member         13
3       2  standing  member         13

这是一种方法

df[['txt','parliament']]=df['session'].str.split(':', expand=True).ffill()
df=df[(df['txt']!='parliament')]
df.drop(columns='txt')
    session     type        role    txt     parliament
1         1     standing    member  1         12
2         1     standing    member  1         12
4         1     standing    member  1         13
5         2     standing    member  2         13

你可以在议会之后提取数字:然后在前面填写值:

out = (df[~df['session'].str.startswith('parliament')]
           .join(df['session'].str.extract(r':\s(?P<parliament>\d+)').ffill()))
print(out)

# Output
  session      type    role parliament
1       1  standing  member         12
2       1  standing  member         12
4       1  standing  member         13
5       2  standing  member         13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM