【发布时间】:2018-03-31 07:34:19
【问题描述】:
这是我尝试的更简单的方法。
demo = pd.DataFrame(data=np.array([["APPLE", "APPLE", "APPLE", "MANGO", "MANGO"],
["DOWN", "DOWN", "DOWN", "UP", "DOWN"]]))
demo = demo.T
demo.columns = ['FRUIT', 'DIRECTION']
这是上面的数据框的样子
FRUIT DIRECTION
0 APPLE DOWN
1 APPLE DOWN
2 APPLE DOWN
3 MANGO UP
4 MANGO DOWN
现在
labels = demo["DIRECTION"]
l, v = np.unique(labels, return_counts=True)
d = dict(zip(l, v))
print(d)
这为我提供了“DIRECTIONS”列的唯一计数。
{'DOWN': 3, 'UP': 2}
现在,如果我想找到按“DIRECTION”列分组的“FRUIT”列的计数频率怎么办。
我确实这样做了。
print(demo.groupby(['FRUIT', 'DIRECTION']).size())
这给了我,
FRUIT DIRECTION
APPLE DOWN 3
MANGO DOWN 1
UP 1
我对上述输出有疑问。
我希望能够做到以下几点:
a) APPLE 在 UP 方向上没有任何内容,所以我希望它显示为 0。 如下表所示。
FRUIT DIRECTION
APPLE DOWN 3
UP 0
MANGO DOWN 1
UP 1
b) 我希望能够像这样将它创建到字典中
{'APPLE': {DOWN: 3, UP: 0}, 'MANGO': {DOWN: 1, UP: 1}}
复制上述字典的任何其他方式也可以。我正在使用 Python 3。
【问题讨论】:
标签: python pandas numpy dictionary pandas-groupby