我有多个数据框,例如:
In [44]: df1
Out[44]:
id featureName featureValue
0 1 20003=foo 1
In [45]: df2
Out[45]:
id featureName featureValue
0 2 bar 15.9
1 1 bar 23.8
我的目标是按以下方式生成字典列表:[{'20003=foo': 1, 'bar': 23.8}, {'bar': 15.9}]
我最初的方法是首先将df2附加到df1:
In [47]: x = df1.append(df2)
Out[47]:
id featureName featureValue
0 1 20003=foo 1.0
0 2 bar 15.9
1 1 bar 23.8
然后在id上做一个groupby。
In [64]: grouped = x.groupby(by='id')
In [65]: for name, group in grouped:
...: print group
...:
id featureName featureValue
0 1 20003=foo 1.0
1 1 bar 23.8
eid featureName featureValue
0 2 bar 15.9
但那时我被卡住了。谢谢!
答案 0 :(得分:0)
cols = ['featureName', 'featureValue']
[dict(zip(*g[cols].T.values)) for n, g in df1.append(df2).groupby('id')]
[{'20003=foo': 1.0, 'bar': 23.8}, {'bar': 15.9}]