gpt4 book ai didi

Python Pandas 更新数据框列类型

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:22 24 4
gpt4 key购买 nike

我正在将 excel 读入 pandas,所有列标题都是日期时间,除了第一个。我想格式化日期时间列标题。

这是测试数据和代码。

import pandas as pd
import datetime

d = {
datetime.datetime(2018, 01, 31, 8, 00): [9.1, 8.5, 7.4, 6.5, 5.3],
datetime.datetime(2018, 02, 28, 9, 00): [9.2, 8.5, 7.2, 6.1, 5.2],
datetime.datetime(2018, 03, 31, 10, 00): [9.3, 8.5, 7.1, 6.1, 5.1],
'ID': [1, 2, 3, 4, 5],
}
df = pd.DataFrame(d, columns= ['ID', datetime.datetime(2018, 01, 31, 8, 00), datetime.datetime(2018, 02, 28, 9, 00), datetime.datetime(2018, 03, 31, 10, 00)])
df.loc[:, df.columns != 'ID'].columns = [x.date() for x in df.loc[:, df.columns != 'ID'].columns]

我想将日期时间标题格式化为日期。例如:将 2018-01-31 08:00:00 更新为 2018-01-31

我正在使用 .date() 函数来实现它。我认为我的做法是错误的。下面一行没有更新日期时间列标题。

df.loc[:, df.columns != 'ID'].columns = [x.date() for x in df.loc[:, df.columns != 'ID'].columns]

有什么想法或建议吗? enter image description here

谢谢。

最佳答案

import pandas as pd
import datetime

d = {
datetime.datetime(2018, 01, 31, 8, 00): [9.1, 8.5, 7.4, 6.5, 5.3],
datetime.datetime(2018, 02, 28, 9, 00): [9.2, 8.5, 7.2, 6.1, 5.2],
datetime.datetime(2018, 03, 31, 10, 00): [9.3, 8.5, 7.1, 6.1, 5.1],
'ID': [1, 2, 3, 4, 5],
}
df = pd.DataFrame(d, columns= ['ID', datetime.datetime(2018, 01, 31, 8, 00), datetime.datetime(2018, 02, 28, 9, 00), datetime.datetime(2018, 03, 31, 10, 00)])
df.columns = [x.date() if isinstance(x, datetime.datetime) else x for x in df.columns]
print(df.columns)

输出:

   ID  2018-01-31  2018-02-28  2018-03-31
0 1 9.1 9.2 9.3
1 2 8.5 8.5 8.5
2 3 7.4 7.2 7.1
3 4 6.5 6.1 6.1
4 5 5.3 5.2 5.1

关于Python Pandas 更新数据框列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49697045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com