![](/img/trans.png)
[英]Python: panda dataframe split string in each row with occasional empty row
[英]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.