Python 如何从pandas中的频率表中提取数组
我有一张熊猫的频率表。我想将每种气味级别的每个类别的频率提取到一个列表中,每个元素都是一个NumPy数组,包含给定气味级别的类别频率计数。如何在不手动指定行和列的情况下执行此操作 这就是我所拥有的:Python 如何从pandas中的频率表中提取数组,python,pandas,numpy,Python,Pandas,Numpy,我有一张熊猫的频率表。我想将每种气味级别的每个类别的频率提取到一个列表中,每个元素都是一个NumPy数组,包含给定气味级别的类别频率计数。如何在不手动指定行和列的情况下执行此操作 这就是我所拥有的: test=df.groupby(['odor', 'class']) test.size() 其结果是: odor class a e 400 c p 192 f p 2160 l e 400 m
test=df.groupby(['odor', 'class'])
test.size()
其结果是:
odor class
a e 400
c p 192
f p 2160
l e 400
m p 36
n e 3408
p 120
p p 256
s p 576
y p 576
dtype: int64
请记住,您提供的数据为零。根据你留下的半条线索,我完全在猜测你的数据是什么样子
df = pd.DataFrame(
{
'odor': np.random.choice(list('acflmnpsy'), 100),
'class': np.random.choice(list('ep'), 100),
'frequency': np.random.choice(np.arange(60, 241), 100)
}
)
df.groupby(['odor', 'class']).frequency.apply(np.array)
odor class
a e [170, 178, 67, 97]
p [183, 165, 73]
c e [106, 163, 71, 171]
p [72, 224, 112, 196, 134]
f e [134, 67, 190, 226, 74, 62, 107]
p [222, 74, 177, 186, 122, 120, 121]
l e [81, 97, 124, 181, 101, 185]
p [182, 136, 77, 190]
m e [217, 121, 141, 102, 171, 106]
p [127, 178, 127, 72, 209, 63, 167]
n e [166, 121, 79, 117, 130, 92]
p [71, 136, 219, 155]
p e [118, 193, 147, 219, 154, 130, 169]
p [69, 162, 138, 193, 236, 144, 192]
s e [105, 139, 143]
p [72, 149, 186, 220, 63]
y e [143, 134, 102, 144, 186, 207, 181]
p [177, 215, 190, 158, 203, 157, 85, 172]
Name: frequency, dtype: object
这就是你要找的吗 pivot_表(索引=['Class'],列=['Odor'],值=['freq'],aggfunc='sum')