pandas.DataFrame输入DataFrame但得到NaN吗?

时间:2018-11-12 20:56:32

标签: pandas

df是原始的DataFrame,csv文件。

a = df.head(3)                  # get part of df.

这是表a。

enter image description here

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不包含任何数字?

2 个答案:

答案 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并传递indexcolumns关键字参数时,您将隐式索引不在原始DataFrame b中。

如果您只想重新索引b,为什么不直接这样做呢?

b = b.copy()
b.index = ['a', 'b']
b.columns = ['v', 'g']