【问题标题】:Remove part of string after a specific character in Python在Python中的特定字符之后删除部分字符串
【发布时间】:2020-06-17 19:46:37
【问题描述】:
给定一个time 列如下:
time
0 2019Y8m16d10h
1 2019Y9m3d10h
2 2019Y9m3d10h58s
3 2019Y9m3d10h
如何删除以d 开头的子字符串,我尝试过使用df['time'].str.split('d')[0],但它不起作用。
我想要的结果会是这样。谢谢。
time
0 2019Y8m16d
1 2019Y9m3d
2 2019Y9m3d
3 2019Y9m3d
【问题讨论】:
标签:
regex
python-3.x
pandas
dataframe
split
【解决方案1】:
您很接近,需要str[0] 来选择列表,然后添加d:
df['time'] = df['time'].str.split('d').str[0].add('d')
或者:
df['time'] = df['time'].str.split('(d)').str[:2].str.join('')
print (df)
time
0 2019Y8m16d
1 2019Y9m3d
2 2019Y9m3d
3 2019Y9m3d
或者使用Series.str.extract:
df['time'] = df['time'].str.extract('(.+d)')
print (df)
time
0 2019Y8m16d
1 2019Y9m3d
2 2019Y9m3d
3 2019Y9m3d
【解决方案2】:
一种可能的解决方案:
df['time'].str.extract(r'([^d]+d)')
【解决方案3】:
或者您可以简单地使用应用功能来解决如下目的:
df.apply(lambda x: x['time'].split('d')[0]+'d',axis=1)