尝试在Python pandas中解析字符串并在数据框中创建新列

2024-06-26 03:13:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧。在

Team Opponent  Detail
Redskins Rams  Kirk Cousins .... Penaltyon Bill Smith, Holding:10 yards 

我想做的是用pandas创建三个列,给出我的名字(在本例中是Bill Smith)、违规类型(进攻性控制)以及团队的成本(10码)。看起来是这样的

^{pr2}$

我使用了一些字符串操作来实际提取字段,但不知道如何创建新列。我浏览了一些旧专栏,但似乎不能使其发挥作用。谢谢!在


Tags: 数据pandas名字teamsmithdetailbillkirk
2条回答

您的函数应该返回3个值,例如。。。在

^{1}$

首先创建空列:

^{pr2}$

。。。然后将“apply”的结果强制转换为一个列表。在

df[["Name", "Infraction", "Yards"]] = list(df.Detail.apply(extract))

您可能对this更具体但更广泛的答案感兴趣。在

要创建新列,只需执行以下操作:

^{1}$

例如,假设您想要一个包含列Details的第一个单词的新列

^{pr2}$

这将创建一个包含“Penaltyon”的列

现在,假设我现在想要两个新列,一个是第一个单词,另一个是第二个单词。我可以用这两列创建一个新的数据帧:

new_df =  my_df.apply(lambda x: pd.Series({'first':x.Detail.split(' ')[0],  'second': x.Detail.split(' ')[1]} ), axis=1)

现在我只需连接两个数据帧:

pd.concat([my_df, new_df], axis=1)

相关问题 更多 >