Python Pandas loc切片问题

  统计/机器学习 数据预处理 Python    浏览次数:630        分享
0


有一个如上图的dataframe,我想只选择第一行和第三行,我采用如下的方式报错,请问下是为什么呢?

采用loc的方式:

df.loc['2013-01-01', '2013-01-03']

报错提示:

 

Bobby   2019-08-28 11:32



   2个回答 
1

要看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面经

xiaosu   2019-08-28 14:43

谢谢,试了,都不行。 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
1

中括号得是两个

df.loc[['2013-01-01', '2013-01-03']]

如果不对是不是数据类型的问题,试试这个

df.loc[pd.to_datetime(x) for x in ['2013-01-01','2013-01-03']]


SofaSofa数据科学社区DS面试题库 DS面经

xwemin   2019-08-28 17:21



  相关主题

pd.read_csv读取数据时自动跳过空白行   1回答

pandas dataframe对行去重?   1回答

pandas返回组内某列值最大的行?   1回答

对pandas.DataFrame进行groupby结果中index的问题   2回答

怎么把collections.Counter的计数结果转为pandas的DataFrame   2回答

怎么提取pandas dataframe中某一列每个字符串的前n个字符?   1回答

把pandas.DataFrame中所有行全部随机排列   3回答

pandas pop KeyError求帮助!   3回答

pandas DataFrame去掉重复的行   1回答

pandas同时返回一个dataframe的前几行(head)和后几行(tail)   2回答

统计pandas数据框一个列字符串中每个字符串出现的次数?   2回答

将pandas DataFrame保存成本地txt并删去列名   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!