为何列表中赋值后原DataFrame变量仍为空?能否直接访问?
问题原因与解决方案
为什么df5是空的,dfList[0]有数据?
- 你最初把
df5、df6这些空DataFrame放进dfList时,列表里存的是这些变量的引用。但循环里的dfList[i] = pd.DataFrame(...)操作,并不是修改原来的df5对象,而是把dfList的第i个位置重新赋值成了一个全新的分割后DataFrame。这时候df5依然指向最开始创建的空DataFrame,所以打印出来是空的,而dfList[0]已经变成了新的对象,自然有数据。
能不能直接通过df5获取目标数据?
可以,只要调整代码逻辑,直接给df5等变量赋值,而不是修改列表元素:
import pandas as pd import numpy as np # 假设dframe是你已有的原始DataFrame dframe = pd.DataFrame({'col': range(16)}) df5 = pd.DataFrame() df6 = pd.DataFrame() df7 = pd.DataFrame() df8 = pd.DataFrame() chunk_size = 4 # 先分割原始数据得到所有块 data_chunks = np.array_split(dframe, chunk_size) # 直接把分割结果赋值给各个df变量 df5, df6, df7, df8 = data_chunks # 再生成列表(如果需要的话) dfList = [df5, df6, df7, df8] # 现在打印df5就能得到正确的分割后数据 print(df5)
内容的提问来源于stack exchange,提问作者ikunjshah
相关产品推荐
相关产品推荐

