mpn*_*ny1 5 python dataframe pandas datetimeindex
我正在生成一个空数据框,其中包含一系列日期作为索引.数据将在稍后添加到数据框中.
cbd=pd.date_range(start=pd.datetime(2017,01,02),end=pd.datetime(2017,01,30),period=1)
df = pd.DataFrame(data=None,columns=['Test1','Test2'],index=cbd)
df.head()
Test1 Test2
2017-01-02 NaN NaN
2017-01-03 NaN NaN
2017-01-04 NaN NaN
2017-01-05 NaN NaN
2017-01-06 NaN NaN
Run Code Online (Sandbox Code Playgroud)
一些切片方法似乎不起作用.以下返回KeyError:
df['2017-01-02']
Run Code Online (Sandbox Code Playgroud)
但是,以下任何工作:
df['2017-01-02':'2017-01-02']
df.loc['2017-01-02']
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?为什么第一个切片不返回结果?
MYG*_*YGz 13
[]
在df[]
:
inside时[]
,其中的值将被视为列.:
在里面使用时,它里面[]
的值将被视为行.因为大多数时候人们想要切片而不是切片.因此,他们决定x
,y
在df[x:y]
应该对应行x
中d[x]
或者x
,y
在df[[x,y]]
应该对应于列(S).
df = pd.DataFrame(data = [[1,2,3], [1,2,3], [1,2,3]],
index = ['A','B','C'], columns = ['A','B','C'])
print df
Run Code Online (Sandbox Code Playgroud)
输出:
A B C
A 1 2 3
B 1 2 3
C 1 2 3
Run Code Online (Sandbox Code Playgroud)
现在,当你这样做时df['B']
,它可能意味着两件事:
拿第二个索引B
给你第二行1 2 3
OR
Run Code Online (Sandbox Code Playgroud)取第二列B
,给你第二列2 2 2
.
因此,为了解决这个冲突并保持明确无误df['B']
将永远意味着你想要列'B'
,如果没有这样的列,那么它将抛出一个错误.
df['2017-01-02']
失败?它将搜索一列'2017-01-02'
,因为没有这样的列,它会抛出一个错误.
df.loc['2017-01-02']
那么为什么会有效呢?因为.loc[]
有语法,df.loc[row,column]
如果你愿意,可以省略列,就像你的情况一样,它只是意味着df.loc[row]
归档时间: |
|
查看次数: |
3114 次 |
最近记录: |