df是原始的DataFrame,csv文件。
a = df.head(3) # get part of df.
这是表a。
b = a.loc[1:3,'22':'41'] #select part of a.
c = pd.DataFrame(data=b,index=['a','b'],columns=['v','g']) # give index and columns
最终
b显示2x2。我得到四个值。
c显示2x2 NaN。我得到四个NaN。为什么c不包含任何数字?
答案 0 :(得分:3)
尝试使用.values
,您将遇到“内部数据对齐”
c = pd.DataFrame(data=b.values,index=['a','b'],columns=['v','g']) # give index and columns
Pandas喜欢对齐索引,通过将“ b”数据帧转换为np.array,然后可以使用pandas数据帧构造函数来构建一个新的数据帧,并使用这些2x2值分配新的索引。
答案 1 :(得分:1)
您的DataFrame b
已包含行索引和列索引,因此当您尝试创建DataFrame c
并传递index
和columns
关键字参数时,您将隐式索引不在原始DataFrame b
中。
如果您只想重新索引b
,为什么不直接这样做呢?
b = b.copy()
b.index = ['a', 'b']
b.columns = ['v', 'g']