按另一个数据框中的一列对pandas DataFrame进行排序-Pandas

U10转发

假设我有一个带有两列的Pandas DataFrame,例如:

df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [100, 200, 300, 400]})
print(df)

   a    b
0  1  100
1  2  200
2  3  300
3  4  400

假设我还有一个熊猫系列,例如:

s = pd.Series([1, 3, 2, 4])
print(s)

0    1
1    3
2    2
3    4
dtype: int64

如何将a列排序为与s序列相同的顺序,并将相应的行值排序在一起?

我想要的输出将是:

   a    b
0  1  100
1  3  300
2  2  200
3  4  400

有什么办法可以做到这一点?

请在下面查看自我解答。

U10转发

我经常遇到这些问题,所以我只是想在Pandas中分享我的解决方案。

解决方案:

解决方案1:

使用set_index该转换a列索引,然后使用reindex改变顺序,然后使用rename_axis更改索引名回a,然后使用reset_index该转换a列从索引回柱:

print(df.set_index('a').reindex(s).rename_axis('a').reset_index('a'))

解决方案2:

使用set_index该转换a列索引,然后使用loc改变顺序,然后使用reset_index该转换a列从索引回柱:

print(df.set_index('a').loc[s].reset_index())

解决方案3:

使用iloc以不同的顺序索引行,然后用map得到,将适合的顺序df,使其得到分类与s系列:

print(df.iloc[list(map(df['a'].tolist().index, s))])

解决方案4:

使用pd.DataFrame创建一个新的数据框的对象,然后使用sorted一个key参数排序依据的数据框s系列:

print(pd.DataFrame(sorted(df.values.tolist(), key=lambda x: s.tolist().index(x[0])), columns=df.columns))

时间:

使用以下代码计时:

import pandas as pd
from timeit import timeit
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [100, 200, 300, 400]})
s = pd.Series([1, 3, 2, 4])
def u10_1():
    return df.set_index('a').reindex(s).rename_axis('a').reset_index('a')
def u10_2():
    return df.set_index('a').loc[s].reset_index()
def u10_3():
    return df.iloc[list(map(df['a'].tolist().index, s))]
def u10_4():
    return pd.DataFrame(sorted(df.values.tolist(), key=lambda x: s.tolist().index(x[0])), columns=df.columns)
print('u10_1:', timeit(u10_1, number=1000))
print('u10_2:', timeit(u10_2, number=1000))
print('u10_3:', timeit(u10_3, number=1000))
print('u10_4:', timeit(u10_4, number=1000))

输出:

u10_1: 3.012849470495621
u10_2: 3.072132612502147
u10_3: 0.7498072134665241
u10_4: 0.8109911930595484

@Allen也有一个很好的答案。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按它们在另一个数据框上出现的顺序对multiIndex python pandas数据框进行排序

来自分类Dev

按它们在另一个数据框上出现的顺序对multiIndex python pandas数据框进行排序

来自分类Dev

仅当一列没有值时,Pandas DataFrame才会从另一个数据框中更新

来自分类Dev

包含字母数字数据的Pandas列与另一个数据框的同一列进行比较

来自分类Dev

根据三列将一个Pandas数据框中的行与另一个数据框中的行进行匹配

来自分类Dev

根据选定的列过滤重复的行,并与Pandas中的另一个数据框进行比较

来自分类Dev

pandas 从一个数据框中检索值并在另一个数据框中进行计算

来自分类Dev

需要将一个Pandas(Python)数据框与另一个数据框的值进行比较

来自分类Dev

将pandas.DataFrame.GroupBy结果附加到另一个数据框

来自分类Dev

用Pandas Python中另一个数据框中的另一列的索引更新数据框中的一列

来自分类Dev

在Pandas Dataframe中按一列排序,然后按另一列分组?

来自分类Dev

Python Pandas如何将一个数据框的日期与另一个数据框的日期进行比较?

来自分类Dev

Pandas DataFrame 对每一列进行排序

来自分类Dev

按列中的名称对pandas DataFrame中的数据进行排序

来自分类Dev

按列中的名称对pandas DataFrame中的数据进行排序

来自分类Dev

在Pandas DataFrame中对列进行排序

来自分类Dev

有效地检查与 Pandas DataFrame 中某些值匹配的行并将其添加到另一个数据框中

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

pandas DataFrame按重复对行进行排序

来自分类Dev

在两列上对Pandas Dataframe进行排序,其中一列的值按顺序重复

来自分类Dev

根据列值对 Pandas Dataframe 进行排序

来自分类Dev

尝试使用Python / pandas根据来自另一个数据框的一列的内部和创建一个新的数据框

来自分类Dev

将pandas.DataFrame追加到另一个pandas.DataFrame的一列

来自分类Dev

根据Pandas中的一个公共列从另一个数据框更新多个列

来自分类Dev

如果在另一个数据框列pandas中找到一列中的值,则返回值

来自分类Dev

如何在Python Pandas中将一个数据框的列值与另一个数据框的列值相对应的一列除以另一列?

来自分类Dev

按MultiIndex的一级对pandas DataFrame进行排序

来自分类Dev

按MultiIndex的一级对pandas DataFrame进行排序

Related 相关文章

  1. 1

    按它们在另一个数据框上出现的顺序对multiIndex python pandas数据框进行排序

  2. 2

    按它们在另一个数据框上出现的顺序对multiIndex python pandas数据框进行排序

  3. 3

    仅当一列没有值时,Pandas DataFrame才会从另一个数据框中更新

  4. 4

    包含字母数字数据的Pandas列与另一个数据框的同一列进行比较

  5. 5

    根据三列将一个Pandas数据框中的行与另一个数据框中的行进行匹配

  6. 6

    根据选定的列过滤重复的行,并与Pandas中的另一个数据框进行比较

  7. 7

    pandas 从一个数据框中检索值并在另一个数据框中进行计算

  8. 8

    需要将一个Pandas(Python)数据框与另一个数据框的值进行比较

  9. 9

    将pandas.DataFrame.GroupBy结果附加到另一个数据框

  10. 10

    用Pandas Python中另一个数据框中的另一列的索引更新数据框中的一列

  11. 11

    在Pandas Dataframe中按一列排序,然后按另一列分组?

  12. 12

    Python Pandas如何将一个数据框的日期与另一个数据框的日期进行比较?

  13. 13

    Pandas DataFrame 对每一列进行排序

  14. 14

    按列中的名称对pandas DataFrame中的数据进行排序

  15. 15

    按列中的名称对pandas DataFrame中的数据进行排序

  16. 16

    在Pandas DataFrame中对列进行排序

  17. 17

    有效地检查与 Pandas DataFrame 中某些值匹配的行并将其添加到另一个数据框中

  18. 18

    根据另一列中的值对pandas数据框中的列进行归一化

  19. 19

    根据另一列中的值对pandas数据框中的列进行归一化

  20. 20

    pandas DataFrame按重复对行进行排序

  21. 21

    在两列上对Pandas Dataframe进行排序,其中一列的值按顺序重复

  22. 22

    根据列值对 Pandas Dataframe 进行排序

  23. 23

    尝试使用Python / pandas根据来自另一个数据框的一列的内部和创建一个新的数据框

  24. 24

    将pandas.DataFrame追加到另一个pandas.DataFrame的一列

  25. 25

    根据Pandas中的一个公共列从另一个数据框更新多个列

  26. 26

    如果在另一个数据框列pandas中找到一列中的值,则返回值

  27. 27

    如何在Python Pandas中将一个数据框的列值与另一个数据框的列值相对应的一列除以另一列?

  28. 28

    按MultiIndex的一级对pandas DataFrame进行排序

  29. 29

    按MultiIndex的一级对pandas DataFrame进行排序

热门标签

归档