一些DataFrame的行列操作方法。
新建一个DataFrame对象,代码如下:
df = pd.DataFrame(data = [[1,2,3,4,],[5,6,7,8],[9,10,11,12]],
index=['row1','row2','row3'],
columns=['col1','col2','col3','col4'])
print(df)
输出结果:
col1 col2 col3 col4
row1 1 2 3 4
row2 5 6 7 8
row3 9 10 11 12
1、行列整体操作
df.index,df.index.values,df.columns,df.columns.values,代码:
print(df.index) # 列索引
print('---------------------------------')
print(df.index.values) # 列索引值列表
print('---------------------------------')
print(df.columns) # 行索引
print('---------------------------------')
print(df.columns.values) # 行索引值列表
print('---------------------------------')
print(df.head(2)) # 取df前2行
print('---------------------------------')
print(df.tail(2)) # 取df后2行
输出结果:
---------------------------------
Index(['row1', 'row2', 'row3'], dtype='object')
---------------------------------
['row1' 'row2' 'row3']
---------------------------------
Index(['col1', 'col2', 'col3', 'col4'], dtype='object')
---------------------------------
['col1' 'col2' 'col3' 'col4']
---------------------------------
col1 col2 col3 col4
row1 1 2 3 4
row2 5 6 7 8
---------------------------------
col1 col2 col3 col4
row2 5 6 7 8
row3 9 10 11 12
df.sum(), df.apply(),df**2,代码:
print(df.sum())
print('----------------------------------')
print(df.apply(lambda row: row**2))
print('----------------------------------')
print(df ** 2)
输出结果:
----------------------------------
col1 15
col2 18
col3 21
col4 24
dtype: int64
----------------------------------
col1 col2 col3 col4
row1 1 4 9 16
row2 25 36 49 64
row3 81 100 121 144
----------------------------------
col1 col2 col3 col4
row1 1 4 9 16
row2 25 36 49 64
row3 81 100 121 144
2、直接使用df取DataFrame值
取列操作:
print(df['col2']) # 选择表格中的'col2'列,使用类字典属性,返回的是Series类型
print('-------------------------------')
print(df[['col2']]) # 选择表格中的'col2'列,返回的是DataFrame类型
print('-------------------------------')
print(df[['col1','col3']]) # 选择表格中的'col1','col3'列
print('-------------------------------')
print(df.col2) # 选择表格中的'col2'列,使用点属性,返回的是Series类型
输出结果:
-------------------------------
row1 2
row2 6
row3 10
Name: col2, dtype: int64
-------------------------------
col2
row1 2
row2 6
row3 10
-------------------------------
col1 col3
row1 1 3
row2 5 7
row3 9 11
-------------------------------
row1 2
row2 6
row3 10
Name: col2, dtype: int64
取行操作:
print(df[1:2]) # 以下标取第二行
print('-------------------------------')
print(df['row2':'row2']) # 以索引取row2行
print('-------------------------------')
print(df['row2':'row3']) # 以索引取row2-row3行
print('-------------------------------')
print(df['col2']['row3']) # 第二列第三行数据,只能使用索引
输出结果
-------------------------------
col1 col2 col3 col4
row2 5 6 7 8
-------------------------------
col1 col2 col3 col4
row2 5 6 7 8
-------------------------------
col1 col2 col3 col4
row2 5 6 7 8
row3 9 10 11 12
-------------------------------
10
3、df.loc或df.iloc取DataFrame值
df.loc取DataFrame值,只能使用行列索引;df.iloc操作类似,只能使用下标:
print('---------------------------------')
print(df.loc['row2']) # 取index为row2行的数据
print('---------------------------------')
print(df.loc[['row2']]) # 按照index的序值,取index为row2行的数据
print('---------------------------------')
print(df.loc[:,'col2']) # 取col2列数据
print('---------------------------------')
print(df.loc['row1']['col2']) # 取row1行,col2列数据
输出结果
---------------------------------
col1 5
col2 6
col3 7
col4 8
Name: row2, dtype: int64
---------------------------------
col1 col2 col3 col4
row2 5 6 7 8
---------------------------------
row1 2
row2 6
row3 10
Name: col2, dtype: int64
---------------------------------
2