为什么value_counts不显示所有值?

2024-09-28 19:00:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个大数据帧上使用pandas 0.18.1。我被value_counts()的行为弄糊涂了。这是我的代码:

print df.phase.value_counts()
def normalise_phase(x):
    print x
    return int(str(x).split('/')[0])
df['phase_normalised'] = df['phase'].apply(normalise_phase)

这将打印以下内容:

^{pr2}$

两个问题:

  • 为什么nan打印为normalise_phase的输出,而nan 不是列为value_counts中的值?在
  • 为什么value_countsdtype显示为int64,如果它有以下字符串值: 1/2和{}也在里面?在

Tags: 数据代码pandasdfreturnvaluedefnan
1条回答
网友
1楼 · 发布于 2024-09-28 19:00:35

您需要传递dropna=False以计算nan(请参见docs)。 int64是序列的数据类型(值的计数)。值本身就是索引。如果您检查,索引的数据类型将是object。在

ser = pd.Series([1, '1/2', '1/2', 3, np.nan, 5])

ser.value_counts(dropna=False)
Out: 
1/2    2
5      1
3      1
1      1
NaN    1
dtype: int64

ser.value_counts(dropna=False).index
Out: Index(['1/2', 5, 3, 1, nan], dtype='object')

相关问题 更多 >