You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于DataFrame子切片及列名初始化新DataFrame,切片后显示列名而非索引

Pandas 问题解答

1. 从另一个DataFrame的子切片及其列名初始化新DataFrame

分两种常见场景来处理:

场景一:直接从原DataFrame切取部分行列生成新DataFrame

如果你已经明确要选取的行和列范围,直接用loc(按标签)或iloc(按位置)切片后赋值即可,新DataFrame会自动继承对应列的列名:

import pandas as pd

# 原DataFrame示例
original_df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'London', 'Paris']
})

# 切取前2行,以及'Age'和'City'列生成新DataFrame
new_df = original_df.loc[:1, ['Age', 'City']]
print(new_df)

输出会自动保留列名:

Age      City
0   25  New York
1   30    London

场景二:用单独的子切片数据和列名构造新DataFrame

如果你手里已经有了子切片的原始数据(比如从原DataFrame提取的values),以及对应的列名列表,直接用pd.DataFrame构造函数传入参数即可:

# 从原DataFrame提取的子切片数据
sub_data = original_df.loc[:1, ['Age', 'City']].values
# 自定义列名
col_names = ['UserAge', 'UserCity']

# 构造新DataFrame
new_df = pd.DataFrame(data=sub_data, columns=col_names)
print(new_df)

输出:

UserAge  UserCity
0       25  New York
1       30    London

2. 按数组指定的索引切片列后,显示列名而非索引

作为新手,你可能担心用列位置索引切片后看不到列名?其实iloc切片列后,生成的子DataFrame会自动保留原列名,举个实际例子:

# 原DataFrame示例
df = pd.DataFrame({
    'Name': ['Alice', 'Bob'],
    'Age': [25, 30],
    'City': ['NY', 'LA'],
    'Score': [90, 85]
})

# 用数组指定列的位置索引(比如第2和第4列,索引从0开始)
cols_index = [1, 3]
# 切片列
subset_df = df.iloc[:, cols_index]

print(subset_df)

输出会清晰显示列名:

Age  Score
0   25     90
1   30     85

如果遇到列名被省略的情况(比如列数过多),可以手动调整Pandas的显示设置确保列名可见:

# 强制显示所有列名,避免被省略
pd.set_option('display.max_columns', None)
print(subset_df)

要是你需要单独提取列名列表展示,直接调用columns属性即可:

print("当前子DataFrame的列名:", subset_df.columns.tolist())

输出:当前子DataFrame的列名: ['Age', 'Score']


内容的提问来源于stack exchange,提问作者user7648646

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:50:30