让我们考虑一下这个数据帧:
df = pd.DataFrame(np.random.rand(4,4), columns = ['A', 'B', 'AB', 'O'])
df
Out[1]:
A B AB O
0 0.704744 0.032988 0.514788 0.405281
1 0.978119 0.354312 0.273255 0.908691
2 0.653161 0.337653 0.309225 0.008059
3 0.023022 0.110995 0.751048 0.088853
现在假设我们要选择两列,并使用另一列作为索引。我们可以使用set_index()
并轻松完成,但让我们尝试一种更麻烦的方法,并使用pd.DataFrame()
:
pd.DataFrame(df[['B','AB']], index = df['A'].values)
Out[2]:
B AB
0.704744 NaN NaN
0.978119 NaN NaN
0.653161 NaN NaN
0.023022 NaN NaN
为什么会产生NaN
值?你知道吗
如果我传递一个整数列表作为索引,同样的问题也会出现(例如index = [10,11,12,13]
)。你知道吗
通过将数据作为numpy.ndarray
和df[['B','AB']].values
传递,我们可以很容易地解决这个问题。不会以这种方式显示NaN
值。你知道吗
另外,在不再指定索引的地方,没有NaN
值与pd.DataFrame(df[['B','AB']])
一起显示。你知道吗
但是,同样,为什么上面代码的NaN
值?你知道吗
如果您传递一个dataframe作为
DataFrame
构造函数的第一个参数,它将用给定的索引构造一个新的dataframe,并且从原始dataframe赋值,因为该索引有值。你知道吗例如,如果你写:
它将选择第一行和第三行:
因为没有浮点数的值(就像你的问题
0.704744
),它将用NaN
填充缺少的值不过,您可以通过以下方式轻松获得所需:
相关问题 更多 >
编程相关推荐