我正在学习使用熊猫,我正在解析NOAA的每日观察结果:(为了清楚起见,这里被截断)
import pandas as pd
import StringIO
csv_data = """
date,maxt,mint,avgt,pcpn,snow,snwd,hdd,cdd
1872-01-01,48,28,38.0,0.00,M,M,27,0
1872-01-02,43,28,35.5,0.00,M,M,29,0
1872-01-03,47,25,36.0,0.00,M,M,29,0
1872-01-04,39,22,30.5,0.00,M,M,34,0
1872-01-05,37,15,26.0,0.03,M,M,39,0
"""
fake_csv_file = StringIO.StringIO(csv_data)
df = pd.read_csv(fake_csv_file, parse_dates=['date'], index_col='date')
当我检查df.index
时,我的索引似乎包含datetime
个值:
>>> df.index
DatetimeIndex(['1872-01-01', '1872-01-02', '1872-01-03', '1872-01-04',
'1872-01-05'],
dtype='datetime64[ns]', name=u'date', freq=None)
现在我的date
值是索引而不是列,我无法弄清楚如何访问date
值。我可以选择一行:
>>> first_row = df.loc['1872-01-01']
>>> print first_row
maxt 48
mint 28
avgt 38
pcpn 0
snow M
snwd M
hdd 27
cdd 0
Name: 1872-01-01 00:00:00, dtype: object
现在我想以编程方式获取该日期值,但first_row.index
会返回我没想到的内容:
>>> first_row.index
Index([u'maxt', u'mint', u'avgt', u'pcpn', u'snow', u'snwd', u'hdd', u'cdd'], dtype='object')
我希望first_row.index
会返回datetime
值,而是返回所有列的列表。
我做错了什么吗?我错过了什么?
如果我的问题不明确,我希望能够以任何列的方式获取行的日期值:
>>> df.maxt
48
>>> df.mint
28
显然,这会返回一个关键错误:
>>> df.date # <- something like this?
此外,如果有人问,我可能想要获取日期值,以便我可以使用dt
或dayofyear
等dayofweek
个好东西。
答案 0 :(得分:1)
我认为你需要name
Series
什么是标量值:
first_row = df.loc['1872-01-01']
print (first_row.name)
1872-01-01 00:00:00
然后使用:
print (first_row.name.dayofyear)
1
print (first_row.name.dayofweek)
0