python - Pandas 在执行 groupby 后重置索引并保留选择性列

标签 python pandas

我想获取一个 Pandas 数据框,按列计算唯一元素并保留 2 列。但是我在 groupby 之后得到了一个多索引数据框,我无法 (1) 展平 (2) 只选择相关列。这是我的代码:

import pandas as pd
df = pd.DataFrame({
'ID':[1,2,3,4,5,1],
'Ticker':['AA','BB','CC','DD','CC','BB'],
'Amount':[10,20,30,40,50,60],
'Date_1':['1/12/2018','1/14/2018','1/12/2018','1/14/2018','2/1/2018','1/12/2018'],
'Random_data':['ax','','nan','','by','cz'],
'Count':[23,1,4,56,34,53]
})

df2 = df.groupby(['Ticker']).agg(['nunique'])

df2.reset_index()

print(df2)

df2 仍然带有两个级别的索引。并具有所有列:Amount、Count、Date_1、ID、Random_data。

如何将其减少到一级索引?

并且只保留 ID 和 Random_data 列?

最佳答案

试试这个:

1) 仅选择相关列 ( ['ID', 'Random_data'] )

2) 不要将列表传递给 .agg - 只是 'nunique' - 该列表是导致多索引行为的原因。

df2 = df.groupby(['Ticker'])['ID', 'Random_data'].agg('nunique')
df2.reset_index()

  Ticker  ID  Random_data
0     AA   1            1
1     BB   2            2
2     CC   2            2
3     DD   1            1

关于python - Pandas 在执行 groupby 后重置索引并保留选择性列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52330016/

相关文章:

python - 将 unicode 符号转换为 unicode 实体

Python 日志记录不写入文件

python : Check if IRC connection is lost (PING PONG? )

python - 在 Pandas DataFrame 中添加新列时结果不一致。它是系列还是值?

python - 如何根据某些条件转换(长到宽)数据框

python - Pandas 截断列值而不四舍五入

python - 我需要将原始 MySQL 查询转换为 Django ORM 查询

python - 有什么方法可以替换 pandas pd.merge 吗?

python - 向 pandas 的每一行添加一个向量

python - 使用列中的日期范围扩展 Pandas 数据框