获取NaN作为value_counts()的第一个值

时间:2017-09-05 16:33:07

标签: python pandas dataframe

我有一个小数据集,我需要在其上执行计数值操作。数据集看起来像这样:

A   B
1   67
1   56
1   23
2   22
2   12
3   78

columns = ["Count"]
g = pd.DataFrame(A.value_counts(), index=False, columns=columns)

所以我想要做的是尝试计算A列中每个唯一值的实例数并创建一个新的DataFrame,我尝试使用A.value_counts(),但是当我尝试添加这个新列时得到第一个值为NaN。可能是什么问题?这就是我得到的:

A Count
1  NaN
2  3
3  2

我得到第一个值为NaN,然后​​显示正常输出。可能是什么原因?我希望输出是这样的:

A  Count
1   3
2   2
3   1

我应该如何避免获得此NaN值?数据集中的索引从0开始。

2 个答案:

答案 0 :(得分:4)

你通常会这样做

In [2334]: df.A.value_counts().reset_index(name='Count').rename(columns={'index': 'A'})
Out[2334]:
   A  Count
0  1      3
1  2      2
2  3      1

或者,

In [2335]: df.groupby('A').size().reset_index(name='Count')
Out[2335]:
   A  Count
0  1      3
1  2      2
2  3      1

详细

In [2337]: df
Out[2337]:
   A   B
0  1  67
1  1  56
2  1  23
3  2  22
4  2  12
5  3  78

答案 1 :(得分:0)

您没有向我们提供任何代码,但这一点可能证明是有用的:

from collections import defaultdict

counts = defaultdict(lambda: 0)

with open('data', 'r') as datafile:
    datafile.readline()  # skipping the header
    for line in datafile:
        value = line.split()[0]  # assuming whitespace is a delimiter
        counts[value] = counts[value] + 1

希望这有帮助!