在数据框中的 Pandas 系列的空格之前获取字符串

Get string before a whitespace on a Pandas series in a dataframe

我正在准备绘图数据,但我目前在 Pandas

中的数据帧上应用函数时遇到问题

这是我的数据框:

我需要做的是只从时间戳中获取日期。所以在当前的数据框中,预期的结果应该是这样的:

             timestamp    action
0           2020-03-03 pagevisit
1           2020-03-03 pagevisit
2           2020-03-03 pagevisit
3           2020-03-03 pagevisit
4           2020-03-03 pagevisit

我有大约 100,000 条记录需要清理并只获取日期。我试过了

df['timestamp'] = df['timestamp'].apply(lambda x: x.split(' ')[0])

它returns错误

AttributeError: 'Timestamp' object has no attribute 'split'

-- 我也试过了

df['timestamp'] = df.apply(lambda x: x['timestamp'].split(' ')[0])

但是 returns

return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 135, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index_class_helper.pxi", line 109, in pandas._libs.index.Int64Engine._check_type
KeyError: 'timestamp'

我觉得这是一个相当容易的任务,但我已经检查了过去一个小时,但仍然无法完成。我的 pandas ver 是 1.0.1 所以老实说我不知道​​原因,我已经绝望了。请帮忙。

使用.date()

例如:

df['timestamp'] = df['timestamp'].date()

演示:

print(pd.Timestamp('2020-03-03 12:13:56+09:00').date())
# -->2020-03-03

查看错误,似乎列时间戳的类型为 pd.Timestamp

(查看文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.html

如果你只是想获取字符串形式的日期,你可以按照以下步骤进行操作

df['timestamp'] = df['timestamp'].apply(lambda x: str(x.date()))

(或者您可以只使用 x.date() 来获取 datetime.date 类型)