如何防止多值字典对象将每个单词拆分为单个字母字符串?

2024-06-24 13:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dictionary对象,如下所示:

my_dict = {123456789123: ('a', 'category'),
           123456789456:('bc','subcategory'),123456789678:('c_d','subcategory')}

下面的代码提取df中列标题中的整数并将其与字典中的键进行比较,然后通过选择第二个值作为新df的列,选择第一个值作为df中的值来创建新的dataframe

代码:

names = df.columns.values
new_df = pd.DataFrame()
for name in names:    
    if ('.value.' in name) and df[name][0]:
        last_number = int(name[-13:])
        print(last_number)
        key, value = my_dict[last_number]
        try:
            new_df[value][0] = list(new_df[value][0]) + [key]
        except:
            new_df[value] = [key]

新数据框:

   category                subcategory
0    a                     [b, c, c_d]

我不确定是什么导致了我的代码中出现这种情况,但是如何防止bc分裂呢

编辑:

上面的示例:

data.value.123456789123    data.value.123456789456     data.value.123456789678   
    TRUE                      TRUE                        TRUE              

新的数据框应如下所示:

   category                subcategory
0    a                     [bc, c_d]

Tags: key代码nametruenumberdfnewdata
2条回答

使用DataFrame构造函数和groupby

df=pd.DataFrame(list(my_dict.values()))
df.groupby(1)[0].apply(list).to_frame(0).T
1 category subcategory
0      [a]   [bc, c_d]

list(new_df[value][0])将一个字符串分解成一个字符列表,这就是为什么要得到单个字符

list(new_df[value][0])必须是[new_df[value][0]]。或者,更好的是,list(new_df[value][0]) + [key]必须是[new_df[value][0], key]

相关问题 更多 >