将grouby dict_keys转换为具有关键值的字典

发布于 2025-02-12 19:01:49 字数 2495 浏览 3 评论 0原文

对于下面给出的示例文件,如何将groupby键转换为字典,然后将整数编号分配给键?我希望最终能够通过字典迭代每个键的字典中的数字。

到目前为止,这是我的代码:

import math
import pandas as pd

original_df = pd.read_csv('NewDatasetTotal4.csv')

original_df = original_df.astype(str)
length = original_df.original_class.count()

group_size =  original_df.groupby('original_class').size()

colum_to_grab = 'original_class'
group_list = original_df.groupby(colum_to_grab)

# How to now convert the group_list.groups.keys() to a dictionary with
# pigs_size = 5
# goats_size = 3
# chickens_size = 7
# hens_size = 7
# sheep_size = 2

分配的整数可以在[5,3,7,7,2]的数组中,

这是我的数据文件:

slice_file_name fsID    start   end salience    fold    classID class_name  original_class
1-1000020520400.wav                 1   1   pigs    
1-100004024000001.wav                   1   1   pigs    
1-10000406050001.wav                    1   1   pigs    
1-1000050120400.wav                 1   1   pigs    
1-1000050320400.wav                 1   1   pigs    
1-1000050520400.wav                 1   2   goats   
1-10000601400001000.wav                 1   2   goats   
1-1000060340000.wav                 1   2   goats   
1-100006070500.wav                  1   3   chickens    
1-100007020800.wav                  1   3   chickens    
1-100007024000001.wav                   1   3   chickens    
1-1000070320400.wav                 1   3   chickens    
1-100007050800.wav                  1   3   chickens    
1-100007064000001.wav                   1   3   chickens    
1-100010620400.wav                  1   3   chickens    
1-100040620400.wav                  1   3   chickens    
1-10006020500.wav                   1   3   chickens    
1-10006030500.wav                   1   3   chickens    
1-100060520400.wav                  1   4   hens    
1-10007020500.wav                   1   4   hens    
2-100070420400.wav                  1   4   hens    
2-100070540000.wav                  1   4   hens    
2-1313131313004.wav                 1   4   hens    
2-1313131313043.wav                 1   4   hens    
2-1313131313044.wav                 1   5   sheep   
2-150002020500.wav                  1   5   sheep   
2-150002060800.wav                  1   5   sheep   
2-150004022040001.wav                   1   5   sheep   
2-15000406050001.wav                    1   5   sheep   
2-150006014000001.wav                   1   5   sheep   
2-150006024000001.wav                   1   5   sheep

For the sample file given below, how to go about converting the groupby keys to a dictionary and then assigning integer numbers to the keys? I wanted to be able to eventually iterate through the dictionary extracting the numbers from the dictionary for each respective key.

Here is my code so far:

import math
import pandas as pd

original_df = pd.read_csv('NewDatasetTotal4.csv')

original_df = original_df.astype(str)
length = original_df.original_class.count()

group_size =  original_df.groupby('original_class').size()

colum_to_grab = 'original_class'
group_list = original_df.groupby(colum_to_grab)

# How to now convert the group_list.groups.keys() to a dictionary with
# pigs_size = 5
# goats_size = 3
# chickens_size = 7
# hens_size = 7
# sheep_size = 2

Can the assigned integers be in an array like [5, 3, 7, 7, 2]

Here is my data file:

slice_file_name fsID    start   end salience    fold    classID class_name  original_class
1-1000020520400.wav                 1   1   pigs    
1-100004024000001.wav                   1   1   pigs    
1-10000406050001.wav                    1   1   pigs    
1-1000050120400.wav                 1   1   pigs    
1-1000050320400.wav                 1   1   pigs    
1-1000050520400.wav                 1   2   goats   
1-10000601400001000.wav                 1   2   goats   
1-1000060340000.wav                 1   2   goats   
1-100006070500.wav                  1   3   chickens    
1-100007020800.wav                  1   3   chickens    
1-100007024000001.wav                   1   3   chickens    
1-1000070320400.wav                 1   3   chickens    
1-100007050800.wav                  1   3   chickens    
1-100007064000001.wav                   1   3   chickens    
1-100010620400.wav                  1   3   chickens    
1-100040620400.wav                  1   3   chickens    
1-10006020500.wav                   1   3   chickens    
1-10006030500.wav                   1   3   chickens    
1-100060520400.wav                  1   4   hens    
1-10007020500.wav                   1   4   hens    
2-100070420400.wav                  1   4   hens    
2-100070540000.wav                  1   4   hens    
2-1313131313004.wav                 1   4   hens    
2-1313131313043.wav                 1   4   hens    
2-1313131313044.wav                 1   5   sheep   
2-150002020500.wav                  1   5   sheep   
2-150002060800.wav                  1   5   sheep   
2-150004022040001.wav                   1   5   sheep   
2-15000406050001.wav                    1   5   sheep   
2-150006014000001.wav                   1   5   sheep   
2-150006024000001.wav                   1   5   sheep

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一片旧的回忆 2025-02-19 19:01:49

如果我正确理解您,您可以做:

out = {k: g.shape[0] for k, g in df.groupby("original_class")}
print(out)

此打印:

{"chickens": 10, "goats": 3, "hens": 6, "pigs": 5, "sheep": 7}

编辑:

lst = [5, 3, 2, 4, 2]

out = {k: v for (k, _), v in zip(df.groupby("original_class"), lst)}
print(out)

打印:

{'chickens': 5, 'goats': 3, 'hens': 2, 'pigs': 4, 'sheep': 2}

If I understand you correctly, you can do:

out = {k: g.shape[0] for k, g in df.groupby("original_class")}
print(out)

This prints:

{"chickens": 10, "goats": 3, "hens": 6, "pigs": 5, "sheep": 7}

EDIT:

lst = [5, 3, 2, 4, 2]

out = {k: v for (k, _), v in zip(df.groupby("original_class"), lst)}
print(out)

Prints:

{'chickens': 5, 'goats': 3, 'hens': 2, 'pigs': 4, 'sheep': 2}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文