DataFrame的行、列索引
函数功能df.loc[val]根据
选择单行或多行df.iloc[where]根据
选择单行或多行df.loc[:,:]根据
选择多行多列[行,列],用法和numpy切片的区别见下文df.iloc[:,:]根据
选择多行多列[行,列] ,用法和numpy切片一致reindex方法通过标签选择行或列get_value, set_value根据行和列的标签设置单个值
import numpy as np
import pandas as pd
In [40]: data = pd.DataFrame(np.arange(16).reshape((4,4)))
In [41]: data
Out[41]:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
In [43]: data[2]
Out[43]:
0 2
1 6
2 10
3 14
Name: 2, dtype: int64
In [44]: data[[1,2]]
Out[44]:
1 2
0 1 2
1 5 6
2 9 10
3 13 14
In [45]: data.loc[3]
Out[45]:
0 12
1 13
2 14
3 15
Name: 3, dtype: int64
In [46]: data.loc[[2,0]]
Out[46]:
0 1 2 3
2 8 9 10 11
0 0 1 2 3
DataFrame的切片和numpy切片的区别:
(1)pd.loc[0:3] 选取出0 1 2 3 共四行;pd.iloc[0:3] 选取出0 1 2 共三行; np[0:3] 选取出0 1 2 共三行。
In [31]: data
Out[31]:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
In [32]: data[2:3]
Out[32]:
0 1 2 3
2 8 9 10 11
In [33]: data.iloc[2:3]
Out[33]:
0 1 2 3
2 8 9 10 11
In [34]: data.iloc[:,2:3]
Out[34]:
2
0 2
1 6
2 10
3 14
In [35]: data.loc[2:3]
Out[35]:
0 1 2 3
2 8 9 10 11
3 12 13 14 15
In [36]: data.loc[:,2:3]
Out[36]:
2 3
0 2 3
1 6 7
2 10 11
3 14 15
(2)对于numpy数据,切片范围超过数据原有size会报错;但对于pandas数据,切片范围超过数据原有size则直接切到多少返回多少,没有就返回Empty DataFrame。
In [37]: data.iloc[:,3:5]
Out[37]:
3
0 3
1 7
2 11
3 15
In [47]: data.iloc[:,5:10]
Out[47]:
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]
In [38]: data.iloc[5:10]
Out[38]:
Empty DataFrame
Columns: [0, 1, 2, 3]
Index: []
DataFrame的条件过滤
In [48]: data
Out[48]:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
In [49]: data[data[0]>2]
Out[49]:
0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
In [50]: data[(data[0]>2) & (data[2]<10)]
Out[50]:
0 1 2 3
1 4 5 6 7
In [51]: data[data[1]>10]
Out[51]:
0 1 2 3
3 12 13 14 15
In [52]: data[(data[1]>10) | (data[3]<5)]
Out[52]:
0 1 2 3
0 0 1 2 3
3 12 13 14 15
Original: https://blog.csdn.net/qq_41034838/article/details/121246179
Author: 神shuo要有光
Title: pandas DataFrame的行、列索引与条件过滤
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/753141/
转载文章受原作者版权保护。转载请注明原作者出处!