python - 在对这些值进行操作后将值从一个字典添加到另一个字典
问题描述
我有一个熊猫数据框。我想将数据框按 2 列分组,获取数据框切片的长度,然后使用键的第一部分将长度添加到另一个字典中,即“C”。
我的代码:
df = pd.DataFrame({'C': [20, 20, 20, 20, 10, 10, 10, 30, 30, 30],
'C2': [20, 20, 20, 20, 10, 10, 10, 30, 30, 30],
'D': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]})
df_dictionary = df.groupby(["C", "C2"])
second_dict = dict()
for key, df_values in df_dictionary:
print(len(df_values.index))
我尝试了以下方法:
for key[0], df_values in df_dictionary.iteritems():
second_dict.setdefault(key, []).extend(df_values.index)
但它不允许我对 df_values 执行操作。有什么办法可以解决这个问题吗?最后,第二个字典应该有以下值
解决方案
使用,通过withGroupBy.size
删除第二级:Series.reset_index
drop=True
Series.to_dict
d = df.groupby(["C", "C2"]).size().reset_index(level=1, drop=True).to_dict()
print (d)
{10: 3, 20: 4, 30: 3}
如果需要索引值:
d1 = (df.groupby(["C", "C2"])
.apply(lambda x: x.index.tolist())
.reset_index(level=1, drop=True)
.to_dict())
print (d1)
{10: [4, 5, 6], 20: [0, 1, 2, 3], 30: [7, 8, 9]}
您的解决方案应该有效:
for key, df_values in df_dictionary:
second_dict.setdefault(key[0], []).extend(df_values.index)
print (second_dict)
{10: [4, 5, 6], 20: [0, 1, 2, 3], 30: [7, 8, 9]}
推荐阅读
- docker - 在 kubernetes 从站中运行的无根目录,“docker run”失败
- api - 如何使用 JSON API 将对象从谷歌云存储下载到本地目录
- python - AttributeError:“PrefetchDataset”对象没有属性“make_initializable_iterator”
- javascript - 根据 id 从文本输入中获取布尔值
- gitlab - Gitlab:当新管道在同一分支上启动时如何自动关闭旧管道?
- python - 在 Python 中使用 8 位无符号算术校验和
- javascript - Material-UI Dialog 如何在对话框的右上角放置关闭按钮
- amazon-web-services - 通过请求另一个函数对 Lambda 函数进行超时会导致超时错误
- javascript - 如何在点击时切换特定标签或组件
- vue.js - 加载在子页面上的 Vue 应用程序的 URL 将更新为站点起始页