Pandas 笔记(6): 重命名与组合

Python 数据处理库使用方法

作者:LYGreen
分类:数据分析
创建时间: 5/16/2026, 1:33:16 PM
更新时间: 5/16/2026, 1:33:16 PM

重命名

修改列名

使用 df.rename(columns={...}) 进行重命名

df_renamed = df.rename(columns={'A': 'alpha', 'B': 'beta'})
# 或者
# df_renamed = df.rename({'A': 'alpha', 'B': 'beta'}, axis=1)

示例:

import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df)

df_renamed = df.rename(columns={'A': 'alpha', 'B': 'beta'})
print(df_renamed)

输出:

   A  B
0  1  3
1  2  4
   alpha  beta
0      1     3
1      2     4

修改行索引

使用 df.rename(index={...}) 进行重命名

df_renamed = df.rename(index={0: 'row1', 1: 'row2'})
# 或者
# df_renamed = df.rename({0: 'alpha', 1: 'beta'}, axis=0)

示例:

import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df)

df_renamed = df.rename(index={0: 'alpha', 1: 'beta'})
print(df_renamed)

输出:

   A  B
0  1  3
1  2  4
       A  B
alpha  1  3
beta   2  4

函数批量命名

给函数传入函数即可

例如:

df.rename(columns=str.lower)
df.rename(columns=lambda x: x.strip())

数据合并

轴向拼接

使用 pd.concat() 函数进行数据拼接

例如:

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

# 上下堆叠
result_v = pd.concat([df1, df2], ignore_index=True)

# 左右拼接
result_h = pd.concat([df1, df2], axis=1)

print(result_v)
print(result_h)

输出:

   A  B
0  1  3
1  2  4
2  5  7
3  6  8
   A  B  A  B
0  1  3  5  7
1  2  4  6  8

主键拼接

类似于 SQL 中的 JOIN。根据一个或多个键将不同 DataFrame 的行连接起来。使用 pd.merge() 函数进行拼接

主要参数:

  • on:用于连接的列名(必须两边都有)。
  • left_on / right_on:当左右表用来连接的列名不同时使用。
  • how:连接方式,可选值有:
    • inner(内连接,默认):只保留两表都有的键。
    • left(左连接):保留左表所有行,右表无匹配的补 NaN。
    • right(右连接):保留右表所有行。
    • outer(外连接):保留两表所有的键。

例如:

import pandas as pd

left = pd.DataFrame({'key': ['K0', 'K1'], 'A': ['A0', 'A1']})
right = pd.DataFrame({'key': ['K0', 'K1'], 'B': ['B0', 'B1']})

result = pd.merge(left, right, on='key', how='inner')

print(result)

输出:

  key   A   B
0  K0  A0  B0
1  K1  A1  B1

索引连接

join() 是一种快捷方式,默认基于行索引进行合并。它的底层其实就是 merge,但写起来更简练。

例如:

import pandas as pd

left = pd.DataFrame({'A': ['A0', 'A1']}, index=['K0', 'K1'])
right = pd.DataFrame({'B': ['B0', 'B1']}, index=['K0', 'K2'])

# 默认是左连接 (how='left')
result = left.join(right, how='outer')

print(result)

输出:

      A    B
K0   A0   B0
K1   A1  NaN
K2  NaN   B1

资源