我是熊猫新手,并试图学习如何使用它。我试图使用我在其中一个wes视频和笔记本中看到的数据时遇到问题。我有一个csv文件,如下所示:
filePath,vp,score
E:\Audio\7168965711_5601_4.wav,Cust_9709495726,-2
E:\Audio\7168965711_5601_4.wav,Cust_9708568031,-80
E:\Audio\7168965711_5601_4.wav,Cust_9702445777,-2
E:\Audio\7168965711_5601_4.wav,Cust_7023544759,-35
E:\Audio\7168965711_5601_4.wav,Cust_9702229339,-77
E:\Audio\7168965711_5601_4.wav,Cust_9513243289,25
E:\Audio\7168965711_5601_4.wav,Cust_2102513187,18
E:\Audio\7168965711_5601_4.wav,Cust_6625625104,-56
E:\Audio\7168965711_5601_4.wav,Cust_6073165338,-40
E:\Audio\7168965711_5601_4.wav,Cust_5105831247,-30
E:\Audio\7168965711_5601_4.wav,Cust_9513082770,-55
E:\Audio\7168965711_5601_4.wav,Cust_5753907026,-79
E:\Audio\7168965711_5601_4.wav,Cust_7403410322,11
E:\Audio\7168965711_5601_4.wav,Cust_4062144116,-70
我将它加载到一个数据框,并将其加载到“filePath”和“vp”,代码为:
res = df.groupby(['filePath','vp']).size()
res.index
,输出为:
[E:\Audio\7168965711_5601_4.wav Cust_2102513187,
Cust_4062144116, Cust_5105831247,
Cust_5753907026, Cust_6073165338,
Cust_6625625104, Cust_7023544759,
Cust_7403410322, Cust_9513082770,
Cust_9513243289, Cust_9702229339,
Cust_9702445777, Cust_9708568031,
Cust_9709495726]
现在我试图像dict那样接近索引,正如我在示例中看到的那样,但是当我在做
时res['Cust_4062144116']
我收到错误:
KeyError: 'Cust_4062144116'
当我把文件路径放入时,我确实成功得到了一个结果,但正如我所理解并在前面的例子中看到的那样我也应该能够使用vp键,不是这样吗?
很抱歉,如果它是一个微不足道的,我只是无法理解为什么它在一个例子而不是在另一个例子。
答案 0 :(得分:1)
Rutger你不对。可以对multiIndex系列进行“部分”索引。我只是以错误的方式做到了。
索引第一级是文件名(例如上面的E:\ Audio \ 7168965711_5601_4.wav),第二级是vp。意思是,对于每个文件名,我有多个vps。 现在,这是正确的:
res['E:\Audio\7168965711_5601_4.wav]
并将返回: Cust_2102513187 2 Cust_4062144116 8 ....
但尝试使用内部索引(Cust_索引)进行索引将失败。
答案 1 :(得分:0)
您可以分组两列,因此获得MultiIndex。这意味着您还必须使用这些列进行切片,而不是使用单个索引值。
groupby对象上的.size()
会将其转换为系列。如果您在DataFrame中强制它,您可以使用.xs
方法切片单个级别:
res = pd.DataFrame(df.groupby(['filePath','vp']).size())
res.xs('Cust_4062144116', level=1)
有效。如果你想把它保存为一个系列,布尔索引可以提供帮助,例如:
res[res.index.get_level_values(1) == 'Cust_4062144116']
最后一个选项的可读性稍差,但有时也更灵活,您可以一次测试多个值,例如:
res[res.index.get_level_values(1).isin(['Cust_4062144116', 'Cust_6073165338'])]