【发布时间】:2022-01-12 05:43:45
【问题描述】:
我有数据框
df = pd.DataFrame({'session_id': ['T01', 'T02', 'T03', 'T04', 'T05', 'T06', 'T07'],
'path': [array(['a', 'b', 'c'], dtype='<U1'),
array(['x', 'y', 'z'], dtype='<U1'),
array(['a', 'b', 'c'], dtype='<U1'),
array(['x', 'y', 'z'], dtype='<U1'),
array(['k'], dtype='<U1'),
array(['x', 'y', 'z'], dtype='<U1'),
array(['h', 'i'], dtype='<U1')],
'flag': [0, 1, 0, 0, 0, 1, 0],
'total_value': [0.02, 0.05, 0.02, 0.05, 0.001, 0.05, 0.03]})
喜欢下面这张表
| session_id | path | flag | total_value |
| ---------- | -------------------- | ----- | ------------- |
| T01 | [a,b,c] | 0 | 0.020 |
| T02 | [x,y,z] | 1 | 0.050 |
| T03 | [a,b,c] | 0 | 0.020 |
| T04 | [x,y,z] | 0 | 0.050 |
| T05 | [k] | 0 | 0.001 |
| T06 | [x,y,z] | 1 | 0.050 |
| T07 | [h,i] | 0 | 0.030 |
我想按路径、标志、total_value 和按 total_value desc 排序后的记录数进行分组。最终结果选择如下。
| path | flag | total_value | count |
| -------------------- | ----- | ------------- | ------- |
| [x,y,z] | 1 | 0.050 | 2 |
| [x,y,z] | 0 | 0.050 | 1 |
| [h,i] | 0 | 0.030 | 1 |
| [a,b,c] | 0 | 0.020 | 2 |
| [k] | 0 | 0.001 | 1 |
我尝试使用
df.groupby(['path', 'flag', 'total_value']).count()
但会显示错误
unhashable type: 'numpy.ndarray'
【问题讨论】:
-
错误:不可散列的类型:'numpy.ndarray'
-
您能否将此数据框作为字典包含在您的问题中?
-
我该怎么办? @enke
-
对不起,我不确定你的问题,但这个数据集是由这段代码创建的
-
从集合导入 defaultdict df_paths = df.groupby('session_id')['event_name'].aggregate( lambda x: x.tolist()).reset_index()
标签: python pandas dataframe pandas-groupby