我想提取站点 2 的用电量
>>> df4 = pd.read_excel(xls, 'Elec Monthly Cons')
>>> df4
Site Unnamed: 1 2014-01-01 00:00:00 2014-02-01 00:00:00 2014-03-01 00:00:00 ... 2017-08-01 00:00:00 2017-09-01 00:00:00 2017-10-01 00:00:00 2017-11-01 00:00:00 2017-12-01 00:00:00
0 Site Profile JAN 2014 FEB 2014 MAR 2014 ... AUG 2017 SEP 2017 OCT 2017 NOV 2017 DEC 2017
1 Site 1 NHH 10344 NaN NaN ... NaN NaN NaN NaN NaN
2 Site 2 HH 258351 229513 239379 ... NaN NaN NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
类型
type(df4)
<class 'pandas.core.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)
我的目标是取出数值,但我不知道如何正确设置索引。到目前为止我尝试过的东西根本不起作用。
df1 = df.loc[idx[:,1:2],:]
Run Code Online (Sandbox Code Playgroud)
但
raise IndexingError('Too many indexers')
pandas.core.indexing.IndexingError: Too many indexers
Run Code Online (Sandbox Code Playgroud)
似乎我不了解索引。系列类型有什么作用吗?
df.head
<bound method NDFrame.head of Site Site 2
Unnamed: 1 HH
Run Code Online (Sandbox Code Playgroud)
编辑
print (df.index)
Index([ 'Site', 'Unnamed: 1', 2014-01-01 00:00:00,
2014-02-01 00:00:00, 2014-03-01 00:00:00, 2014-04-01 00:00:00,
2014-05-01 00:00:00, 2014-06-01 00:00:00, 2014-07-01 00:00:00,
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
在我看来是必要的 remove :,因为这意味着选择所有列,但Series没有列。
另外似乎没有MultiIndex,所以需要:
df1 = df.iloc[1:2]
Run Code Online (Sandbox Code Playgroud)
前 2 行是标题有问题,因此对于 MultiIndex DataFrame 需要:
df4 = pd.read_excel(xls, 'Elec Monthly Cons', header=[0,1], index_col=[0,1])
Run Code Online (Sandbox Code Playgroud)
然后选择使用:
idx = pd.IndexSlice
df1 = df.loc[:, idx[:,'FEB 2014':'MAR 2014']]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10205 次 |
| 最近记录: |