选择DataFrame中的多列数据

这是系列文章,我会按照stackoverflow上pandas相关问题投票数排序进行整理学习。不学习是会变咸鱼的~

原问题:selecting multiple columns in pandas dataframe,如题,选择DataFrame中的多列数据。

假设原始数据如下:

1
2
3
4
5
6
import pandas as pd
import numpy as np

df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})

1)传递包含列名的列表 注:要有[]

1
df1 = df[['A','C']]

2)使用iloc方法 注:索引是从0开始,并且不包括最大值

1
df2 = df.iloc[:, 0:2] # 取前两列数据

3)使用loc方法

1
2
df3 = df.loc[:, 'A':'C'] #从A列到C列,总共取三列数据
df3 = df.loc[0:4, ['A', 'B', 'C']] # 也可以直接写出所要的列名,注意要加上[];0:4是取前四列,因为没有重新设置行索引,所以看起来像是直接用的索引,其实这里是索引的名字

4)使用columns

1
2
df4 = df[df.columns[2:4]] # 取第3和4列
rows = df.loc[df.index[:3]] # 类似的,使用index可以取整行数据,效果跟df[:3]一样