重命名
修改列名
使用 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