Pandas 中的 DataFrame 提供了丰富的行列操作与运算功能,包括按标签或位置选取数据、添加或删除行列、进行列间加减乘除等元素级运算,以及通过 apply 和 applymap 实现函数映射处理,方便进行数据清洗、转换与分析,是数据处理过程中的核心工具之一。本文主要介绍Python pandas 中DataFrame 行列的常用操作和运算,以及相关的示例代码。

1、DataFrame的常用操作

1)查看DataFrame的大小

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df.shape)

2)查看DataFrame的列名(columns)

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df.columns)

3)查看DataFrame的行名(index)

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df.index)

4)查看每行的数据类型

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df.dtypes)

5)查看行列的内容

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df)
print(df.iloc[-1]) #选取DataFrame最后一行,返回的是Series
print(df.iloc[-1:]) #选取DataFrame最后一行,返回的是DataFrame
print(df.loc[0:1,'b':'c']) #这种用于选取行索引列索引已知
print(df.iat[1,1]) #选取第二行第二列,用于已知行、列位置的选取。
print(df.head(2)) #查看前两行的内容
print(df.tail(2)) #查看后两行的内容
print(df.loc[[df.index[0],df.index[1]]]) #通过label查看
print(df.loc[[df.index[-2],df.index[-1]]])

6)查看每一列数据的整体特征

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df.describe())

7)对DataFrame进行倒置

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])
print(df.T)

2、DataFrame的行列运算

1)DataFrame中两列数据相加减

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

df['d - a'] = df['d'] - df['a']
df['d + a'] = df['d'] + df['a']


print(df)

2)DataFrame中两行数据相加减

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

print(df[df.a==10].values-df[df.a==1].values)
print(df[df.a==10].values+df[df.a==1].values)

3、行列选取操作

Pandas 中的行列选取操作主要通过 loc[](按标签)和 iloc[](按位置)实现,支持单行单列、切片、多行多列以及行列组合的灵活访问方式;列还可通过 df['列名']df[['列1', '列2']] 快速提取,为数据筛选与分析提供了高效便捷的基础工具。

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [5, 15, 25],
    'C': ['x', 'y', 'z']
}, index=['row1', 'row2', 'row3'])

print(df)
#选取列
# 返回 Series,只含列 A
print(df['A'])
# 返回子 DataFrame,包含列 A 和 B
print(df[['A', 'B']]) 

#选取行
# 按行标签选取 row1
print(df.loc['row1'])  
# 按行位置选取第 0 行
print(df.iloc[0])
# 切片选取第 0 和第 1 行(不含 row3)
print(df[0:2])   

4、添加行与列

添加列可以通过直接赋值的方式实现,常用于计算列间关系或添加新数据;添加行通常使用 pd.concat() 合并一个新构造的 DataFrame,通过设置相同的列名与指定索引,实现将新行插入到原数据中,是扩展数据表的重要手段。

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [5, 15, 25],
    'C': ['x', 'y', 'z']
}, index=['row1', 'row2', 'row3'])

print(df)
#添加列
# 新列为 A+B
df['D'] = df['A'] + df['B']  
print(df)
#添加行
new_row = pd.DataFrame({'A': [40], 'B': [35], 
'C': ['w'], 'D': [75]}, index=['row4'])
df = pd.concat([df, new_row])
print(df)

5、删除行与列

在 Pandas 中,删除行与列常通过 drop() 方法实现,其中 axis=0 表示删除行,axis=1 表示删除列;可结合 inplace=True 参数直接修改原始 DataFrame,适用于按标签删除指定的行或列,常用于数据清洗与结构调整。

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [5, 15, 25],
    'C': ['x', 'y', 'z']
}, index=['row1', 'row2', 'row3'])

print(df)
#删除列
df.drop('B', axis=1, inplace=True) 
print(df)
#删除行
df.drop('row2', axis=0, inplace=True)
print(df)

6、应用函数

Pandas 中,应用函数是对 DataFrame 或 Series 中的数据进行批量处理的重要方式。常用的 apply() 可对行或列执行函数,applymap() 用于逐元素操作整个 DataFrame,而 map() 通常用于 Series 中的元素级处理,适合替换、转换或格式化数据,能大大提高数据清洗与转换的灵活性和效率。

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [5, 15, 25],
    'C': ['x', 'y', 'z']
}, index=['row1', 'row2', 'row3'])

print(df)
# 应用函数
# 对 A 列每个值乘以 2
# 整体转换
print(df['A'].apply(lambda x: x * 2))  
print(df.applymap(lambda x: str(x) if isinstance(x, int) else x))
print(df)

7、修改数据

Pandas 中,修改数据可以通过标签或位置直接定位并赋值,如使用 atiat 修改单个单元格,使用 lociloc 修改整行或整列,也可以通过 replace 替换指定值,或用 applyapplymap 对行列或整个表格进行函数级修改,灵活高效地完成数据更新与处理。

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [5, 15, 25],
    'C': ['x', 'y', 'z']
}, index=['row1', 'row2', 'row3'])

print(df)

# 按标签
df.at['row1', 'A'] = 100     
# 按位置
df.iat[0, 1] = 50    

print(df)
# 替换字符串
df.replace({'x': 'X'})        
df['B'] = df['B'].replace(15, 99)

print(df)

相关文档:

Python pandas.DataFrame.iloc函数方法的使用

Python pandas.DataFrame.loc函数方法的使用

Python pandas dataframe iloc 和 loc 的用法及区别

Python pandas.DataFrame.at函数方法的使用

Python pandas.DataFrame.iat函数方法的使用

Python pandas.DataFrame.drop函数方法的使用

Python pandas.DataFrame.where函数方法的使用

推荐文档

相关文档

大家感兴趣的内容

随机列表