首页 > 解决方案 > 使用 pandas 拆分列和重新格式化日期

问题描述

我有一个对象,slist我需要拆分、重新格式化日期并导出为制表符分隔的文件。对于分裂,我认为我在理解第一行时会绊倒?这里是slist

在此处输入图像描述

我尝试了以下方法:

df = pd.DataFrame(data=slist) 
newdf['datetime','values'] = df['node_21_Depth_above_invert'].astype(str).str.split('  ',expand=True)

这给了我这样的东西:

在此处输入图像描述

我花了很多时间试图弄清楚这一点,我知道还有很多其他关于列拆分的 pandas 问题,但我碰壁了,任何见解都会有所帮助。谢谢!

标签: pythonpandas

解决方案


由于您现在将日期时间作为行索引,因此您可以将其设置为数据列.reset_index(),然后重命名列,如下所示:

newdf = df.reset_index()
newdf.columns = ['datetime','values']

测试数据准备

slist = {'node_21_Depth_above_invert': {pd.Timestamp('1998-01-01 01:00:00'): 1.0, pd.Timestamp('1998-01-01 02:00:00'): 1.519419550895691, pd.Timestamp('1998-01-01 03:00:00'): 2.0, pd.Timestamp('1998-01-01 04:00:00'): 2.0, pd.Timestamp('1998-01-01 05:00:00'): 2.0}}

df = pd.DataFrame(data=slist)

print(df)

                     node_21_Depth_above_invert
1998-01-01 01:00:00                     1.00000
1998-01-01 02:00:00                     1.51942
1998-01-01 03:00:00                     2.00000
1998-01-01 04:00:00                     2.00000
1998-01-01 05:00:00                     2.00000

运行新代码

newdf = df.reset_index()
newdf.columns = ['datetime','values']

结果:

print(newdf)

             datetime   values
0 1998-01-01 01:00:00  1.00000
1 1998-01-01 02:00:00  1.51942
2 1998-01-01 03:00:00  2.00000
3 1998-01-01 04:00:00  2.00000
4 1998-01-01 05:00:00  2.00000

推荐阅读