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

能否创建部分为其他DataFrame视图、部分非视图的DataFrame?

可实现这种混合视图/非视图的DataFrame

可以实现这种部分列是原DataFrame视图、部分列独立的DataFrame,核心是利用pandas中Series的引用特性:直接引用原DataFrame的列会共享底层数据(视图),而新创建的列则使用独立的数据对象。

示例代码

import pandas as pd
import numpy as np

# 创建原始DataFrame
df_orig = pd.DataFrame({'X': [10, 20, 30], 'Y': [40, 50, 60]})

# 提取原DataFrame的列作为视图(共享底层数据)
view_column = df_orig['X']

# 创建完全独立的新列(不共享任何底层数据)
independent_column = pd.Series([70, 80, 90], name='Z')

# 构造混合DataFrame
df_mixed = pd.DataFrame({'X': view_column, 'Z': independent_column})

# 验证视图特性:修改原DataFrame的X列,混合DataFrame的X会同步更新
df_orig['X'] *= 2
print("混合DataFrame的X列(视图):", df_mixed['X'].tolist())  # 输出 [20, 40, 60]

# 验证非视图特性:修改混合DataFrame的Z列,原独立列不会变化
df_mixed['Z'] += 5
print("原独立列的值:", independent_column.tolist())  # 输出 [70, 80, 90]

关键说明

  • 视图列:直接通过df_orig['X']提取的列是原DataFrame的视图,两者共享同一底层数据数组,修改任意一方的该列数据都会同步影响另一方。
  • 独立列:新创建的pd.Series或numpy数组作为列时,会被封装为独立的Series对象,与其他对象不共享数据,修改混合DataFrame的该列不会影响原始的独立数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:32:41