我有一個看起來像他的資料框
_____________________
|col1 | col2 | col3 |
---------------------
| a | b | c |
| d | b | c |
| e | f | g |
| h | f | j |
---------------------
我想得到一個如下所示的字典結構
{
b : { col1: [a,d], col2: b, col3: c},
f : { col1: [e, h], col2: f, col3: [g, j]}
}
我看過這個答案。但是對于我想要做的事情似乎有點過頭了,因為它將嵌套字典中鍵的每個值都轉換為串列。我只想col1在創建字典時轉換為串列。這可能嗎?
uj5u.com熱心網友回復:
如果 lambda 函式中有多個其他標量,則使用自定義 lambda 函式回傳串列中的唯一值:
d = (df.set_index('col2', drop=False)
.groupby(level=0)
.agg(lambda x: list(set(x)) if len(set(x)) > 1 else list(set(x))[0])
.to_dict('index'))
print (d)
{'b': {'col1': ['d', 'a'], 'col2': 'b', 'col3': 'c'},
'f': {'col1': ['h', 'e'], 'col2': 'f', 'col3': ['j', 'g']}}
如果順序dict.fromkeys對于洗掉重復項很重要:
d = (df.set_index('col2', drop=False)
.groupby(level=0)
.agg(lambda x: list(dict.fromkeys(x)) if len(set(x)) > 1 else list(set(x))[0])
.to_dict('index'))
print (d)
{'b': {'col1': ['a', 'd'], 'col2': 'b', 'col3': 'c'},
'f': {'col1': ['e', 'h'], 'col2': 'f', 'col3': ['g', 'j']}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441275.html
標籤:Python python-3.x 熊猫 数据框
上一篇:從資料框中提取特征
下一篇:根據多列的值計算統計資訊
