python - 在熊猫中使用多个键索引 groupby 对象
问题描述
我有一个要转换为字典的 pd.DataFrame。字典的键是第一列的值,字典的值是放在元组或列表中的第二列和第三列的值。我试图这样实现:
df
form name state
CCH bla1 act
BGH bla2 act
BGH bla3 nad
KMJ bla4 nad
FRT bla5 nad
我希望字典看起来像这样:
{CCH:[(bla1, act)], BGH:[(bla2,act),(bla3,nad)],KMJ:[(bla4,nad)],FRT:[(bla5,nad)]}
我目前实现这一点的代码是这样的:
df.groupby('form')[['name','state']].apply(tuple).to_dict()
但我得到这个输出:
{CCH:('name','state'),BGH:('name','state'),KMJ:('name','state'),FRT:('name','state')}
请让我知道我哪里出错了?提前致谢!
解决方案
你真的很接近,apply
沿着轴 1 尝试元组。这是使用 dict 理解的一种解决方案:
d = {k: v[['name', 'state']].apply(tuple, axis=1).tolist()
for k, v in df.groupby('form')}
[出去]
{'BGH': [('bla2', 'act'), ('bla3', 'nad')],
'CCH': [('bla1', 'act')],
'FRT': [('bla5', 'nad')],
'KMJ': [('bla4', 'nad')]}
推荐阅读
- c++ - LuaBridge 无法描述的错误
- c# - EF Core Linq 表达式无法翻译
- azure - 使用 ADF 的 Databricks 或函数?
- javascript - nodejs - 如何解析connection.query的返回?
- python-3.x - 我们可以使用 Sparktrials 保存 Hyperopt 试验的结果吗
- python - 我正在尝试定义一个函数及其导数,但它似乎不起作用
- amazon-web-services - AWS Lambda 是否优于 AWS Glue 作业?
- ajax - 我需要查看 ColdFusion2018 中所有登录用户的所有会话范围
- excel - 多次运行 Mailmerge
- multithreading - 从 Fortran90 中的纯子例程调用 fftw 例程