Python 3.x 如何使用更新数据框的行,使其成为具有列名的字典?
我有一个这样的数据帧Python 3.x 如何使用更新数据框的行,使其成为具有列名的字典?,python-3.x,pandas,list,dataframe,pandas-groupby,Python 3.x,Pandas,List,Dataframe,Pandas Groupby,我有一个这样的数据帧 ID Name id2 name2 101 A 1 d_a 103 B 2 d_b 101 A 3 d_c 103 B 4 d_d ID Name id2 name2 101 A [{'id2':1},{'id2':3}] [{'name2':'d_a'},{'name2':'d_c'}] 103 B [{'id2':2},{'id2':4}] [{'name
ID Name id2 name2
101 A 1 d_a
103 B 2 d_b
101 A 3 d_c
103 B 4 d_d
ID Name id2 name2
101 A [{'id2':1},{'id2':3}] [{'name2':'d_a'},{'name2':'d_c'}]
103 B [{'id2':2},{'id2':4}] [{'name2':'d_b'},{'name2':'d_d'}]
我想要这样的输出df
ID Name id2 name2
101 A 1 d_a
103 B 2 d_b
101 A 3 d_c
103 B 4 d_d
ID Name id2 name2
101 A [{'id2':1},{'id2':3}] [{'name2':'d_a'},{'name2':'d_c'}]
103 B [{'id2':2},{'id2':4}] [{'name2':'d_b'},{'name2':'d_d'}]
将列表理解用于: 编辑:与lambda函数一起使用:
cols = ['id2','name2']
df2 = df.groupby(['ID','Name'])[cols].agg(lambda x: x.to_frame().to_dict('r')).reset_index()
print (df2)
ID Name id2 name2
0 101 A [{'id2': 1}, {'id2': 3}] [{'name2': 'd_a'}, {'name2': 'd_c'}]
1 103 B [{'id2': 2}, {'id2': 4}] [{'name2': 'd_b'}, {'name2': 'd_d'}]
将列表理解用于: 编辑:与lambda函数一起使用:
cols = ['id2','name2']
df2 = df.groupby(['ID','Name'])[cols].agg(lambda x: x.to_frame().to_dict('r')).reset_index()
print (df2)
ID Name id2 name2
0 101 A [{'id2': 1}, {'id2': 3}] [{'name2': 'd_a'}, {'name2': 'd_c'}]
1 103 B [{'id2': 2}, {'id2': 4}] [{'name2': 'd_b'}, {'name2': 'd_d'}]
您好@jezrael谢谢您的快速回复,您能告诉我,如果我想将此应用于某个特定列,我尝试过,但得到一个错误,如df有两个列,您只定义了一个。您好,再次感谢您,但是这个方法删除了我想要保持输出中第一列不变的所有其他列,并根据需要进行修改。提前感谢[uu//@R.singh-您能否根据此新要求更改有问题的样本数据?因为不明白需要什么。谢谢。你能检查一下吗?我已经编辑了这个问题。Please@R.singh-感谢您提供的数据和预期输出,因此有可能创建答案;)快乐编码!您好@jezrael谢谢您的快速回复,您能告诉我,如果我想将此应用于某个特定列,我尝试过,但得到一个错误,如df有两个列,您只定义了一个。您好,再次感谢您,但是这个方法删除了我想要保持输出中第一列不变的所有其他列,并根据需要进行修改。提前感谢[uu//@R.singh-您能否根据此新要求更改有问题的样本数据?因为不明白需要什么。谢谢。你能检查一下吗?我已经编辑了这个问题。Please@R.singh-感谢您提供的数据和预期输出,因此有可能创建答案;)快乐编码!