0

我有一个数据框,df

data = [{0: 18, 1: '(Responses) 17th Nov 20'},
        {0: 304, 1: '(Responses) 17th Nov 20'},
        {0: 1177, 1: '(Responses) 17th Nov 20'},
        {0: 899, 1: '(Responses) 17th Nov 20'}]

df = pd.DataFrame(data)

0                1                                          
18    (Responses) 17th Nov 20
304   (Responses) 17th Nov 20
1177  (Responses) 17th Nov 20
899   (Responses) 17th Nov 20

有没有什么有效的方法可以提取出来17th Nov 2020并使其成为一个新column[2]17-11-2020日期?

它也可以是1st2nd3rd其他日期。

预期输出:

0                1                 2                         
18    (Responses) 17th Nov 20   17-11-2020
304   (Responses) 17th Nov 20   17-11-2020
1177  (Responses) 17th Nov 20   17-11-2020
899   (Responses) 17th Nov 20   17-11-2020
4

2 回答 2

1

尝试使用str.splitpd.to_datetime

df[2] = pd.to_datetime(df[1].str.replace('\(Responses\) ', ''))
print(df)

输出:

      0                        1          2
0    18  (Responses) 17th Nov 20 2020-11-17
1   304  (Responses) 17th Nov 20 2020-11-17
2  1177  (Responses) 17th Nov 20 2020-11-17
3   899  (Responses) 17th Nov 20 2020-11-17
于 2020-12-28T04:05:00.613 回答
0

只需split将您的字符串以“(responses)”作为关键字,然后在拆分后获取第二个元素:

  df['new_column'] = df['1'].str.split("(responses)").str[1]
于 2020-12-28T03:53:34.923 回答