Python Pandas loc切片问题

  统计/机器学习 数据预处理 Python    浏览次数:3414        分享
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



  相关讨论

怎么删去pandas中有空值、nan、null的行?

pandas groupby agg中使用自定义函数

怎么对pandas dataframe的列求众数

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

pandas df怎么根据weekgroup补齐没有的行呢

pandas dataframe对行去重?

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

嵌套dictionary类型数据转成pandas dataframe的问题

pandas groupby返回组内排序

pandas怎么求一列的移动中位数?

  随便看看

plt.show()之后matplotlib图像依然不展示

凸函数、凸集分别是什么意思?

线性回归需要满足哪些基本前提假设

凸优化中局部最优解就是全局最优解吗?

为什么神经网络模型不用交叉验证?