能否创建部分为其他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
相关产品推荐
相关产品推荐

