【发布时间】:2021-06-14 06:23:12
【问题描述】:
如何分隔下面日期列中的日期。分隔符是 Y,X 还是 " "?
xx = {'Code': ["001", "002","003"], 'Date': ["202103151716Y202103151716","202103151716X202103151716","202103151716 202103151716"]}
df = pd.DataFrame(data=xx)
df
Code Date
0 001 202103151716Y202103151716
1 002 202103151716X202103151716
2 003 202103151716 202103151716
我下面的解决方案一次找到一个字符,即 Y 或 X,但不能同时找到这两个字符。它用“”替换它们,然后将它们分开。有什么方法可以编写一个查找 X、Y 或空格(“”)并使用空格分隔它们的语句?与运行以下三个语句替换 Y,然后替换 X 相比,在我的解决方案中更像是 OR 语句。
df['Date'] = df['Date'].str.replace('Y',' ') #Replace Y with space
df['Date'] = df['Date'].str.replace('X',' ')
df[['Date1', 'Date2']] = df['Date'].str.split(' ', 1, expand=True) # Splits the column into two other columns, Date1 and Date2
预期输出:
Code Date Date1 Date2
0 001 202103151716 202103151716 202103151716 202103151716
1 002 202103151716 202103151716 202103151716 202103151716
2 003 202103151716 202103151716 202103151716 202103151716
【问题讨论】:
-
df[['Date1', 'Date2']] = df['Date'].str.split(r'\D+', 1, expand=True)? -
或者更具体地说是
df[['Date1', 'Date2']] = df['Date'].str.split('[XY ]', 1, expand=True) -
你是个传奇。这样可行。你介意@WiktorStribiżew 解释这部分 r'\D+' 吗?
-
@Nick 这在这种情况下有效。
-
@Hummer 是的,这就是重点,正则表达式 (
[XY ]) 特定于您提出的问题。 Wiktors 正则表达式更通用。
标签: python regex pandas dataframe