【问题标题】:ordering dataframe according to a list, matching one of the columns in pandas根据列表排序数据框,匹配熊猫中的一列
【发布时间】:2017-03-04 01:27:01
【问题描述】:

我有一个值列表。我有一个数据框,其中一列包含相同的值。如何以与列表相同的方式订购数据框?

列表示例:

[3,
 4,
...
 21,
 23,
 25,
 26]

数据框示例:

     0   1    2
0   ND   3  0/1
1   ND   4  0/1
...
11  ND  21  0/1
12  ND  23  0/1
13  ND  25  0/1
14  ND  26  0/1

我需要确保该表是根据列表排序的。我需要匹配的列是数据框中的第 1 列。

编辑:将排序替换为顺序,因为排序词可能具有误导性

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以根据您的列表创建一个数据框,并与您的数据框合并

a = [3,4,1]
df_a = pd.DataFrame({'VAL2' : a})
df_b = pd.DataFrame({'VAL1' :[0,1,2,3,4,5,6]})
pd.merge(df_a, df_b,left_on='VAL2',right_on='VAL1',how='outer')

【讨论】:

    【解决方案2】:

    也许是这样的:

    df['order'] = df[1].apply(lambda v: l.index(v))
    df_you_wanted = df.sort('order')[[0,1,2]]
    

    这里 l 是你的列表,df 是你的数据框。

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2021-08-08
      • 2014-12-29
      • 2023-03-16
      • 2015-11-06
      • 2012-06-19
      相关资源
      最近更新 更多