python - 将时间戳转换为日期并仅将日期保留在 pandas 列内的列表中
问题描述
我有一个 df,它看起来像:
df
date
[2021-08-31 00:00:00]
[2021-07-02 00:00:00, 2021-07-02 00:00:00]
[2021-08-31 00:00:00, 2021-09-15 00:00:00]
当我将其导出到时,.csv
我得到一个如下所示的列:
date
[Timestamp('2021-08-31 00:00:00')]
[Timestamp('2021-07-02 00:00:00'), Timestamp('2021-07-02 00:00:00')]
[Timestamp('2021-08-31 00:00:00'), Timestamp('2021-09-15 00:00:00')]
我希望文件具有与没有.csv
时相同的外观,最好没有小时、分钟和秒。df
Timestamp
我尝试了什么:
检查我是否可以像这样转换它:
for nr, item in enumerate(df['date']):
print(pd.to_datetime(item[nr],format='%Y%m%d'))
print(type(item[nr]))
break
format
但它仍然返回秒数,如果我添加了参数,我不明白为什么。
2021-08-31 00:00:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
我试过了:
def to_date(df):
res = []
for nr, item in enumerate(df['date']):
res.append(item[nr].date())
return res
df['test'] = to_date(df)
但我得到:
IndexError:列表索引超出范围
而且我不确定我应该如何转换它,以便在我的.csv
文件中我会得到看起来像这样的日期2021-08-31
。
解决方案
尝试通过map()
和列表理解:
df['date']=df['date'].map(lambda x:[str(y) for y in x])
#you can also use apply() or agg() but they are slower then map()
最后使用to_csv()
方法:
df.to_csv('filename.csv')
更新:
如果您只想要日期部分,那么:
df['date']=df['date'].map(lambda x:[str(y.date()) for y in x])
#as suggested by @MrFuppes
推荐阅读
- ios - 从 UIViewController 导航到 SwiftUI 视图
- python - 保存到文件时Dask崩溃?
- java - Java中的信号量多线程
- sql-server - 将数据类型 varchar 转换为数字时出错。sql t-sql
- c++ - 安装或构建 boost - Windows 无法访问指定的设备、路径或文件
- python - 使用 Santiment sanpy 库进行加密货币数据分析时出错
- windows - 如何找到当前的 Windows Defender 可执行位置?为什么有很多?
- video - 不断调整 .webm 文件的大小
- javascript - 当我在页面底部触摸下拉按钮时,粘性导航栏会抬起我的页脚
- c# - 为什么 dotnet core 5 中的延迟加载会在响应中添加不必要的元素?