清晰明了的DataFrame行列处理

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球