我有一个小数据集,我需要在其上执行计数值操作。数据集看起来像这样:
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开始。
答案 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
希望这有帮助!