【问题标题】:How to reorder a DataFrame based on the column of the other DataFrame如何根据另一个 DataFrame 的列重新排序 DataFrame
【发布时间】:2020-10-29 06:53:54
【问题描述】:

我有两个数据框,其中一个共享列具有相同的值,但顺序不同

df1

    shared_column    column1
0   Z59FTQD X 0 X 243   0
1   0JP29SK X 0 X 243   0
2   0JP29SK X 1 X 243   0
3   0JP29SK X 2 X 243   0
4   0JP29SK X 3 X 243   0

df2
    shared_column    column2
0   ICE2DJP X 0 X 4     ICE2DJP
1   ICE2DJP X 0 X 13    ICE2DJP
2   ICE2DJP X 0 X 20    ICE2DJP
3   ICE2DJP X 0 X 23    ICE2DJP
4   ICE2DJP X 0 X 28    ICE2DJP

两个数据集中的“shared_column”具有相同的行数和值,但顺序不同。

如何根据“df2”中“shared_column”的顺序重新排序“df1”数据框列?

提前致谢!

【问题讨论】:

    标签: python pandas dataframe dataset


    【解决方案1】:

    您可以向 df1 添加一个新列,在此处的示例中称为 sort_col。然后你可以使用 .sort_values()。如果需要,您可以将升序设置为 True。您可能还想在排序后使用 reset_index()。

    df1 = pd.read_clipboard(sep=r"[ ]{2,}", header=None, names=['idx', 'shared_column', 'column1'])
    
    df2 = pd.read_clipboard(sep=r"[ ]{2,}", header=None, names=['idx', 'shared_column', 'column2'])
    
    df1['sort_col'] = df2['shared_column']
    
    df1.sort_values(by='sort_col', inplace=True, ascending=False)
    
    print(df1)
    
        idx shared_column   column1 sort_col
    0   0   Z59FTQD X 0 X 243   0   ICE2DJP X 0 X 4
    4   4   0JP29SK X 3 X 243   0   ICE2DJP X 0 X 28
    3   3   0JP29SK X 2 X 243   0   ICE2DJP X 0 X 23
    2   2   0JP29SK X 1 X 243   0   ICE2DJP X 0 X 20
    1   1   0JP29SK X 0 X 243   0   ICE2DJP X 0 X 13
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2021-05-19
      • 1970-01-01
      • 2019-07-09
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多