如果之前已经回答过这个问题但我似乎无法找到它,请提前抱歉。
我有像这样的熊猫数据框:
id | value1 | value2 | ... | valueN
1 | 321 | 44 | ... | 7766
2 | 5678 | 7638 | ... | 987423
2 | 0971 | 7638 | ... | 1
and so on...
我正确加载它并且我想要实现的是OrderedDict
,如果需要,它将折叠双值。对于上面的例子,
输出字典应为:
{1: ['321', '44', ..., '7766'], 2:['5678,0971', '7638', ..., '987423,1']}
请注意,字典的值为list
,列表的值为strings
。
到目前为止我的代码是:
od = collections.OrderedDict()
for k in df.id:
if k in od:
# This key, pre-exists in this dictionary, so we have to append values
# what should I do here?
else:
# new value inserted. proceed.
od[k] = unordered_dict.get(k)
任何想法?
答案 0 :(得分:0)
我认为这就是你所需要的,至少它对我的虚拟数据起作用了:
all_data = {}
for column in df.columns.values[1:]:
data = df.groupby('id').apply(lambda x: ','.join(x[column])).to_dict()
for key in data:
if key in all_data.keys():
all_data[key].append(data[key])
else:
all_data[key] = [data[key]]