python里的东西都太过灵活,这篇文章是为了梳理一下DataFrame的提取行列操作。先定义以下DataFrame, df.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(12).reshape(3,4),columns=list('ABCD'))
print(df)
结果:
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
df2 = pd.DataFrame(np.arange(12).reshape(3,4),columns=list('ABCD'),index=['Jerry','John','Sam'])
print(df2)
结果:
处理,提取行和列
中括号既可以用来提取行,也可以用来提取列,区分两种方式的用法十分重要。
如果是默认index(第一行从0开始),那么用df[]基本无法处理行
自定义索引、list、结合df.columns,Callable对象
df['A']
结果:
0 0
1 4
2 8
Name: A, dtype: int32
df2['A']
结果:
Jerry 0
John 4
Sam 8
Name: A, dtype: int32
df[['A','C']]
结果:
AC0021462810
df2[['A','C']]
结果:
ACJerry02John46Sam810
df[df.columns[0]]
结果:
0 0
1 4
2 8
Name: A, dtype: int32
df2[df.columns[0]]
结果:
Jerry 0
John 4
Sam 8
Name: A, dtype: int32
df[df.columns[[0,2]]]
结果:
AC0021462810
df2[df.columns[[0,2]]]
结果:
ACJerry02John46Sam810
df[df.columns[0:3]]
结果:
ABC0012145628910
df2[df.columns[0:3]]
结果:
ABCJerry012John456Sam8910
各种函数(少不了我们的lambda)
df[lambda x: df.columns[3]]
结果:
0 3
1 7
2 11
Name: D, dtype: int32
def chooseCol(x):
return df.columns[x]
df[chooseCol(1)]
结果:
0 1
1 5
2 9
Name: B, dtype: int32
默认索引,自定义索引,bool数组
df[:1]
结果:
ABCD00123
df2[:1]
结果:
ABCDJerry0123
df[0:2]
结果:
ABCD0012314567
df2['Jerry':'Sam']
结果:
ABCDJerry0123John4567Sam891011
df[[True,False,True]]
结果:
ABCD001232891011
df[df.duplicated()]
结果:
ABCD
修改行和列的名称
df.rename()
比较重要的参数:mapper, index, columns, axis, inplace.
df.rename({'A':'a'} ,axis = 1,inplace=True)
print(df)
print(df.rename(mapper = {'a':'A'} ,axis = 1))
print(df.rename(columns={'B':'bbbb'}))
print(df.rename(index={0:'aaa'}))
Original: https://blog.csdn.net/skywuuu/article/details/112761973
Author: skywuuuu
Title: 清晰明了的DataFrame行列处理
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/740309/
转载文章受原作者版权保护。转载请注明原作者出处!