【发布时间】:2020-12-28 14:40:30
【问题描述】:
我正在尝试将以下数据框转换为字典。 我想通过 A 列进行分组并列出常见序列。例如
示例 1:
n1 v1 v2
2 A C 3
3 A D 4
4 A C 5
5 A D 6
预期输出:
{'A': [{'C':'3','D':'4'},{'C':'5','D':'6'}]}
示例 2:
n1 n2 v1 v2
s1 A C 3
s1 A D 4
s1 A C 5
s1 A D 6
s1 B P 6
s1 B Q 3
预期输出:
{'s1': {'A': [{'C': 3, 'D': 4}, {'C': 5, 'D': 6}], 'B': {'P': 6, 'Q': 3}}}
所以基本上C 和D 作为一个序列重复,我想将C 和D 放在一个字典中,并列出它是否多次出现。
请注意(目前我正在使用以下代码):
def recur_dictify(frame):
if len(frame.columns) == 1:
if frame.values.size == 1: return frame.values[0][0]
return frame.values.squeeze()
grouped = frame.groupby(frame.columns[0])
d = {k: recur_dictify(g.iloc[:,1:]) for k,g in grouped}
return d
这会返回:
{s1 : {'A': {'C': array(['3', '5'], dtype=object), 'D': array(['4', '6'], dtype=object),'B':{'E':'5','F':'6'}}
另外,s2 可以有另一个系列,E,F,G,E,F,G 重复,一些X 和Y 有单个值
【问题讨论】:
-
序列是否改变或总是包含
C和D? -
嗨,请检查我更新的问题,您可能会更清楚
标签: python pandas list dataframe dictionary