我有一个数据帧,如图所示:
我想按Source类和Destination类对数据进行分组,计算每组中的行数并汇总Attention值。
在尝试实现这一目标时,我无法克服此类型错误:
private static final Pattern oldFileHeaderPattern = (newFileHeaderPattern = Pattern.compile("\\s*^\\s*(-1|0|1)\\s+(-1|0|1)\\s*$.*", 40)).compile("\\s*^\\s*(1|0)\\s*$.*", 40)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-100-6f2c8b3de8f2> in <module>()
----> 1 attdf.groupby(['Source Class', 'Destination Class']).count()
8 frames
pandas/_libs/properties.pyx in pandas._libs.properties.CachedProperty.__get__()
/usr/local/lib/python3.6/dist-packages/pandas/core/algorithms.py in _factorize_array(values, na_sentinel, size_hint, na_value)
458 table = hash_klass(size_hint or len(values))
459 uniques, labels = table.factorize(values, na_sentinel=na_sentinel,
--> 460 na_value=na_value)
461
462 labels = ensure_platform_int(labels)
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.factorize()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()
TypeError: unhashable type: 'numpy.ndarray'
给我一个attdf.groupby(['Source Class', 'Destination Class'])
,我不确定该如何使用它来获取我想要的东西。
数据框attdf可以从以下位置导入:https://drive.google.com/open?id=1t_h4b8FQd9soVgYeiXQasY-EbnhfOEYi
请告知。
答案 0 :(得分:1)
@ Adam.Er8和@jezarael帮助我提供了意见。在我的情况下,无法散列的类型错误是由于数据框中列的数据类型所致。
Original df and df imported from csv
原来,原始数据框有两个对象列,我正试图在groupby中用完。因此,不可散列的类型错误。但是,将数据从csv导入到新的数据框中后,就固定了数据类型。因此,不再面临类型错误。
答案 1 :(得分:0)
尝试使用.agg
如下:
import pandas as pd
attdf = pd.read_csv("attdf.csv")
print(attdf.groupby(['Source Class', 'Destination Class']).agg({"Attention": ['sum', 'count']}))
输出:
Attention
sum count
Source Class Destination Class
0 0 282.368908 1419
1 7.251101 32
2 3.361009 23
3 22.482438 161
4 14.020189 88
5 10.138409 75
6 11.377947 80
1 0 6.172269 32
1 181.582437 1035
2 9.440956 62
3 12.007303 67
4 3.025752 20
5 4.491725 28
6 0.279559 2
2 0 3.349921 23
1 8.521828 62
2 391.116034 2072
3 9.937170 53
4 0.412747 2
5 4.441985 30
6 0.220316 2
3 0 33.156251 161
1 11.944373 67
2 9.176584 53
3 722.685180 3168
4 29.776050 137
5 8.827215 54
6 2.434347 16
4 0 17.431855 88
1 4.195519 20
2 0.457089 2
3 20.401789 137
4 378.802604 1746
5 3.616083 19
6 1.095061 6
5 0 13.525333 75
1 4.289306 28
2 6.424412 30
3 10.911705 54
4 3.896328 19
5 250.309764 1132
6 8.643153 46
6 0 15.249959 80
1 0.150240 2
2 0.413639 2
3 3.108417 16
4 0.850280 6
5 8.655959 46
6 151.571505 686