假设我有两个运动队的记录数据。
d = {'Team': [1, 2], 'Record': ['5-0', '3-2']}
df = pd.DataFrame(data=d)
df
Team Record
0 1 5-0
1 2 3-2我希望将记录拆分并附加到每个团队的新列中,如下所示:
d = {'Team': [1, 2], 'Record': ['5-0', '3-2'], 'Wins': [5, 3], 'Losses' : [0, 2]}
df = pd.DataFrame(data=d)
df
Team Record Wins Losses
0 1 5-0 5 0
1 2 3-2 3 2由于连字符的缘故,Records列中的数据是一个对象。
(df.dtypes)
Team int64
Record object
dtype: object我该怎么做呢?会不会是某种正则表达式,然后是遍历记录列的每一行的列表理解?我想在一个数据帧中为大约400个团队做这件事。提前感谢你的帮助。
发布于 2020-04-11 09:25:48
发布于 2020-04-11 09:42:53
如果数据表现良好,您可以将Series.str.extract与命名捕获组(Number)-(Number)一起使用。然后再向后收缩。
pd.concat([df, df['Record'].str.extract(r'(?P<Wins>\d)-(?P<Losses>\d)')], axis=1)
# Team Record Wins Losses
#0 1 5-0 5 0
#1 2 3-2 3 2https://stackoverflow.com/questions/61150914
复制相似问题