如何调整Pandas中的数据类型?

2024-05-08 12:07:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在熊猫身上练习了MulitIndex函数,但是,它没有像我预期的那样工作。我想是因为我的基础知识不够。你知道吗

from StringIO import StringIO # io.StringIO on python 3.X
import pandas as pd

datacsv = StringIO("""\
date,id,a,b
20150209,42366,7644,6366
20150209,52219,2741,1796
20150209,52831,163,145
20150209,53209,1047,862
20150209,53773,31343,22501
20150209,58935,16621,14873
20150209,65464,19838,12177
20150209,65823,4903,2982
20150209,68497,16564,12207
20150209,79230,48714,37355
20150208,42366,7644,6366
20150208,52219,2741,1796
20150208,52831,163,145
20150208,53209,1047,862
20150208,53773,31343,22501
20150208,58935,16621,14873
20150208,65464,19838,12177
20150208,65823,4903,2982
20150208,68497,16564,12207
20150208,79230,48714,37355"
""")

df = pd.read_csv(datacsv)
df = df.set_index(['date','id']

当前的“日期”是note datetime。如何将日期类型转换为日期时间,如2015-02-09?你知道吗


Tags: 函数fromioimportidpandasdfdate
2条回答

可以使用pd.to_datetime并指定格式将序列(或列)转换为日期时间。你知道吗

例如,CSV文件中的一系列整数(如日期)可以这样转换:

>>> s = pd.Series([20150207, 20150208, 20150209])
>>> pd.to_datetime(s, format="%Y%m%d")
0   2015-02-07
1   2015-02-08
2   2015-02-09
dtype: datetime64[ns]

因此,要在设置索引之前更改日期列,可以编写:

df['date'] = pd.to_datetime(df['date'], format="%Y%m%d")

当您可以将列名传递给参数parse_dates^{}时,为什么要在加载后执行datetime转换:

In [30]:

df = pd.read_csv(io.StringIO(temp1), parse_dates=['date'])
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 20 entries, 0 to 19
Data columns (total 4 columns):
date    20 non-null datetime64[ns]
id      20 non-null int64
a       20 non-null int64
b       20 non-null int64
dtypes: datetime64[ns](1), int64(3)

此外,您还可以指定应将哪个列视为索引,以便执行datetime转换并将索引设置为read_csv的参数,只需设置parse_datesindex_col

In [34]:

df = pd.read_csv(io.StringIO(temp1), parse_dates=['date'], index_col=['date'])
type(df.index)
Out[34]:
pandas.tseries.index.DatetimeIndex

相关问题 更多 >