有一个如上图的dataframe,我想只选择第一行和第三行,我采用如下的方式报错,请问下是为什么呢?
采用loc的方式:
df.loc['2013-01-01', '2013-01-03']
报错提示:
2个回答
要看Date是index还是column,你可以试试下面这两个
df.loc[['2013-01-01', '2013-01-03']]
或者
df.loc[df['Date'].isin(['2013-01-01', '2013-01-03'])]
SofaSofa数据科学社区DS面试题库 DS面经
谢谢,试了,都不行。
1. df.loc[['2013-01-01', '2013-01-03']]
报错:KeyError: "None of [Index(['2013-01-01', '2013-01-03'], dtype='object', name='Date')] are in the [index]"
2. df.loc[df['Date'].isin(['2013-01-01', '2013-01-03'])]
报错:KeyError: 'Date'
但是用.iloc就可以实现类似的需求:
df.iloc[[1, 3], 4:]
是.loc不支持这种了吗?还是我哪里操作不对,尴尬~
-
Bobby
2019-08-28 15:16
你看看你的'2013-01-01'是日期形式还是字符串形式。如果是日期形式的你就试试下面xwemin的答案。
-
xiaosu
2019-08-28 23:53
中括号得是两个
df.loc[['2013-01-01', '2013-01-03']]
如果不对是不是数据类型的问题,试试这个
df.loc[pd.to_datetime(x) for x in ['2013-01-01','2013-01-03']]