【问题标题】:How to prevent multi value dictionary object from splitting each word into individual letter strings?如何防止多值字典对象将每个单词拆分为单独的字母字符串?
【发布时间】:2019-01-08 01:57:58
【问题描述】:

我有一个如下所示的字典对象:

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

下面的代码提取并比较 df 中列标题中的整数与字典中的键,并通过选择第二个值作为新 df 的列和第一个值作为 df 内的值来创建一个新数据帧。

代码:

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]

new_df:

   category                subcategory
0    a                     [b, c, c_d]

我不确定是什么导致了我的代码,但如何防止 bc 分裂?

编辑:

上面的例子df:

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

new_df 应该如下所示:

   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]
  • [new_df[value][0], key] 这行得通!如果你回答我会接受

标签: python python-3.x string pandas


【解决方案1】:

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]

【讨论】:

    【解决方案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]
    

    【讨论】:

    • 据我了解,OP 想要['bc', 'c_d']:“如何防止bc 分裂?
    • @W-B 我没有关注我将在哪里集成您的代码行以及为什么我要将字典对象转换为 df?我使用我正在使用的示例 df 添加了一个编辑。
    猜你喜欢
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2011-04-22
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多