繁体   English   中英

Python Panda 数据框 - 从字符串到日期的整行

[英]Python Panda dataframe - whole row from String to Date

我有一个 csv 文件:

Date,2018-07-31,2018-08-31,2018-09-30
Value,12,34,56

然后将其加载到 DF 中:

df = pd.read_csv('test.csv')

整个日期的第一行被视为一个字符串。 如何将第一行('date')中的值更改为 TimeStamp 对象,以便可以使用如下函数: df.columns[0].month

如何使用例如to_datetime()选项更改整个第一行?

系列总是按列排列

因此,您无法将一行设置为 Pandas datetime系列并在其上无缝使用 Pandas datetime方法。 每次使用时,您都可以编造变通方法将行转换为datetime时间序列。 但这效率低下,并且没有利用矢量化。

可以将行索引或列索引作为datetime

datetime索引:转置您的数据框

最干净的解决方案是转置数据帧并使用datetime索引:

from io import StringIO

x = StringIO("""Date,2018-07-31,2018-08-31,2018-09-30
Value,12,23,45""")

df = pd.read_csv(x)
df = df.set_index('Date').T
df.index = pd.to_datetime(df.index)

print(df)

Date        Value
2018-07-31     12
2018-08-31     23
2018-09-30     45

print(df.index.month)

Int64Index([7, 8, 9], dtype='int64')

datetime

如果您需要列作为datetime ,您可以使用set_index然后pd.to_datetime

df = df.set_index('Date').rename_axis('')
df.columns = pd.to_datetime(df.columns)

print(df)

       2018-07-31  2018-08-31  2018-09-30

Value          12          23          45

print(df.columns.month)

Int64Index([7, 8, 9], dtype='int64')

你可以尝试在你的 DF 上应用T然后使用pd.to_datetime

df = pd.read_csv('test.csv').T
df.reset_index(inplace=True)
df = df.rename(columns={'index':'Date',0:'Value'}).tail(df.shape[0]-1)
df.Date = pd.to_datetime(df.Date)

df
         Date Value
1  31/07/2018    12
2  31/08/2018    23
3  30/09/2018    45

或者

df.T
                1           2           3
Date   31/07/2018  31/08/2018  30/09/2018
Value          12          23          45

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM