如何有条件地拆分熊猫的列

我有一个日志 df,在那个 df 我有列描述。好像。


Description

Machine x : Turn off

Another action here

Another action here

Machine y : Turn off

Machine x : Turn on

Another action here

我只需要用“:”分割行


喜欢:


Description               Machine           Action

Machine x : Turn off      Machine x         Turn off

Another action here

Another action here

Machine y : Turn off      Machine y         Turn off

Machine x : Turn on       Machine x         Turn on

Another action here

我已经尝试过:


s = df["Description"].apply(lambda x:x.split(":"))

df["Action"] = s.apply(lambda x: x[1])

df["Machine"] = s.apply(lambda x: x[0])

还有一些带有“startswith”的东西。


湖上湖
浏览 157回答 3
3回答

qq_花开花谢_0

您可以使用str.extract合适的regex. 这将找到周围的所有值:(也去除冒号周围的空格):df[['Machine', 'Action']] = df.Description.str.extract('(.*) : (.*)',expand=True)>>> df            Description    Machine    Action0  Machine x : Turn off  Machine x  Turn off1   Another action here        NaN       NaN2   Another action here        NaN       NaN3  Machine y : Turn off  Machine y  Turn off4   Machine x : Turn on  Machine x   Turn on5   Another action here        NaN       NaN# df[['Machine', 'Action']] = df.Description.str.extract('(.*) : (.*)',expand=True).fillna('')

婷婷同学_

只需使用split与expand=Truedf[['Machine', 'Action']] =df.Description.str.split(':',expand=True).dropna()df            Description     Machine     Action0  Machine x : Turn off  Machine x    Turn off1   Another action here         NaN        NaN2   Another action here         NaN        NaN3  Machine y : Turn off  Machine y    Turn off4   Machine x : Turn on  Machine x     Turn on5   Another action here         NaN        NaN

陪伴而非守候

给定一个数据框>>> df            Description0  Machine x : Turn off1   Another action here2   Another action here3  Machine y : Turn off4   Machine x : Turn on5   Another action here我会通过Series.str.split(splitter, expand=True).>>> has_colon = df['Description'].str.contains(':')>>> df[['Machine', 'Action']] = df.loc[has_colon, 'Description'].str.split('\s*:\s*', expand=True)>>> df            Description    Machine    Action0  Machine x : Turn off  Machine x  Turn off1   Another action here        NaN       NaN2   Another action here        NaN       NaN3  Machine y : Turn off  Machine y  Turn off4   Machine x : Turn on  Machine x   Turn on5   Another action here        NaN       NaN如果您更喜欢空字符串,可以NaN通过以下方式替换单元格>>> df.fillna('')            Description    Machine    Action0  Machine x : Turn off  Machine x  Turn off1   Another action here                     2   Another action here                     3  Machine y : Turn off  Machine y  Turn off4   Machine x : Turn on  Machine x   Turn on5   Another action here 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python