Python 如何在pandas中按列对数据帧进行分组,并在Json数组中获取所有其他列数据?

Python 如何在pandas中按列对数据帧进行分组,并在Json数组中获取所有其他列数据?,python,pandas,Python,Pandas,我有一个数据框: df = pd.DataFrame({ "Column1": ['A', 'A', 'B', 'B', 'C', 'C', 'C'], "Column2": ['x1', 'x2', 'z1', 'z2', 'm1', 'm2', 'm3'], "Column3": ['y1', 'y2', 'd1', 'd2', 'n1', 'n2', 'n3'] }) 如何按列1分组以获得以下输出 Column1 |新的|列 -------

我有一个数据框:

df = pd.DataFrame({
        "Column1": ['A', 'A', 'B', 'B', 'C', 'C', 'C'],
        "Column2": ['x1', 'x2', 'z1', 'z2', 'm1', 'm2', 'm3'],
        "Column3": ['y1', 'y2', 'd1', 'd2', 'n1', 'n2', 'n3']
})
如何按列1分组以获得以下输出

Column1 |新的|列
-------  | --------|--------
A |[{“Column2”:“x1”,“Column3”:“y1”},{“Column2”:“x2”,“Column3”:“y2”}]
B |[{“Column2”:“z1”,“Column3”:“d1”},{“Column2”:“z2”,“Column3”:“d2”}]
C |[{“Column2”:“m1”,“Column3”:“n1”},{“Column2”:“m2”,“Column3”:
“m2”},{“Column2”:“m3”,“Column3”:“n3”}]

我需要这样做才能将另一个数据帧与Column1连接起来


谢谢

您可以使用以下代码:

df_out =  df.groupby('Column1')\
            .apply(lambda x: x.drop('Column1',axis=1).to_dict(orient='record'))\
            .reset_index(name='new_column')
输出:

  Column1                                         new_column
0       A  [{'Column3': 'y1', 'Column2': 'x1'}, {'Column3...
1       B  [{'Column3': 'd1', 'Column2': 'z1'}, {'Column3...
2       C  [{'Column3': 'n1', 'Column2': 'm1'}, {'Column3...
 'A': [{'Column2': 'x1', 'Column3': 'y1'}, {'Column2': 'x2', 'Column3': 'y2'}],
 'B': [{'Column2': 'z1', 'Column3': 'd1'}, {'Column2': 'z2', 'Column3': 'd2'}],
 'C': [{'Column2': 'm1', 'Column3': 'n1'},
  {'Column2': 'm2', 'Column3': 'n2'},
  {'Column2': 'm3', 'Column3': 'n3'}]}
用于显示完整的数据帧

df_out.to_dict()
输出:

  Column1                                         new_column
0       A  [{'Column3': 'y1', 'Column2': 'x1'}, {'Column3...
1       B  [{'Column3': 'd1', 'Column2': 'z1'}, {'Column3...
2       C  [{'Column3': 'n1', 'Column2': 'm1'}, {'Column3...
 'A': [{'Column2': 'x1', 'Column3': 'y1'}, {'Column2': 'x2', 'Column3': 'y2'}],
 'B': [{'Column2': 'z1', 'Column3': 'd1'}, {'Column2': 'z2', 'Column3': 'd2'}],
 'C': [{'Column2': 'm1', 'Column3': 'n1'},
  {'Column2': 'm2', 'Column3': 'n2'},
  {'Column2': 'm3', 'Column3': 'n3'}]}

你的最终目标是什么?大多数Pandas操作从原始数据帧开始更容易完成,从第二个数据帧开始只能更笨拙地完成…有可能,也可能是可取的,将
df
Column1
上的另一个数据帧合并,而不首先形成
new_column