根据单个列对熊猫中的多个列进行排序

g

我有以下数据框:

df1:

Name    Tis    Exr    Name_2    Exr_2
A1FH    derm   3.4    GHJK      brn:2.4
N4RT    lng    0.1    PP2DS     Lvr:3.4;hup:2.3
GHJK    Pap    2.2    KLM3      tet:2.0
4HHR    stm    1.4    LSDR      NaN
PP2DS   skl    3.7    PMRT      van:3.7;epth:23.5
LSDR    lym    2.1    exty      NaN
2BC4    lym    4.4    NaN       NaN

本质上,“ Tis”和“ Exr”列是指“名称”列,而“ Exr_2”列是指“ Name_2”列。

我正在尝试对数据框进行排序,如果“名称”列中的行与“名称_2”列中的行匹配,那么它们将移至同一行-上面各列中的数据也是如此。保留不匹配的行,但在不匹配的行中将其列为NaN。我希望按字母顺序执行此操作。

所需的输出:

df2:

Name   Tis   Exr   Name_2   Exr_2
GHJK   Pap   2.2   GHJK     brn:2.4
LSDR   lym   2.1   LSDR     NaN
PP2DS  skl   3.7   PP2DS    Lvr:3.4;hup:2.3
2BC4   lym   4.4   NaN      NaN
4HHR   stm   1.4   NaN      NaN
A1FH   derm  3.4   NaN      NaN
NaN    NaN   NaN   exty     NaN
NaN    NaN   NaN   KLM3     tet:2.0
N4RT   lng   0.1   NaN      NaN
NaN    NaN   NaN   PMRT     van:3.7;epth:23.5

我尝试了许多不同的方法:

df1 = pd.read_csv('dataset.csv', error_bad_lines=False, sep = '\t')

df2 = df1.sort_values(['Name', 'Name_2'], ascending =[False, True])

尝试过:

df1[df1.Name==df1.Name_2]

我也尝试在Linux命令行上使用各种工具,但是使用Pandas似乎更好,因为我对Python更加熟悉。

我拥有的数据框超过41,000行。

里奇

您可以将数据分为两个单独的数据框,并用于df.merge匹配名称。

df2 = df1[['Name', 'Tis', 'Exr']].sort_values('Name')
df_temp = df1[['Name_2', 'Exr_2']]
df2 = df2.merge(df_temp, left_on='Name', right_on='Name_2', how='outer')
del df_temp

print(df2)

输出量

     Name   Tis  Exr Name_2              Exr_2
0    2BC4   lym  4.4    NaN                NaN
1    4HHR   stm  1.4    NaN                NaN
2    A1FH  derm  3.4    NaN                NaN
3    GHJK   Pap  2.2   GHJK            brn:2.4
4    LSDR   lym  2.1   LSDR                NaN
5    N4RT   lng  0.1    NaN                NaN
6   PP2DS   skl  3.7  PP2DS    Lvr:3.4;hup:2.3
7     NaN   NaN  NaN   KLM3            tet:2.0
8     NaN   NaN  NaN   PMRT  van:3.7;epth:23.5
9     NaN   NaN  NaN   exty                NaN
10    NaN   NaN  NaN    NaN                NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据单个单元格中的多个值对熊猫数据框进行排序

熊猫:根据列的值对行进行排序

熊猫-按任何列中的最高单个值对数据框进行排序

在熊猫中按升序和降序有条件地对单个列进行排序

对熊猫中的列值进行排序

根据熊猫中的列名删除多个列

根据索引在熊猫中创建多个列

如何根据单个列对数据框中的唯一表进行排序?

如何根据信_and_号熊猫列进行排序?

根据列对熊猫数据框数据进行排列/排序

根据分类列的值对熊猫数据框进行排序

根据熊猫中的另一列对唯一值进行排序

根据熊猫中数据框的日期列对词典列表进行排序

如何根据具有重复值的列对熊猫中的值进行排序

在熊猫的单个列中融化多个布尔列

在查询中按列进行多个排序

根据多个列和条件对数据框进行排序

阻止熊猫对列进行排序

根据熊猫中其他列内容对列进行操作

根据列对行进行排序?

熊猫按单个列中的多个值分组

如何根据熊猫中另一个数据框中的列对数据框进行排序?

如何对熊猫中的一行中的列进行排序?

根据一列的排序对多个Pandas Dataframe列进行排序

如何避免在JTable中对单个列进行重新排序?

有没有一种方法可以根据熊猫中的唯一值对列进行排序?

根据行中的单个值对列进行子集化

根据kdb中的单个条件更新多个列

大熊猫:根据其他多层列,对最里面的列进行分组排序