我有一个如下所示的字典对象:
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
split ?
编辑:
上面的示例 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]
。
关于python - 如何防止多值字典对象将每个单词拆分为单独的字母字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084310/