python - Pandas:如果无序,则跨列对 DataFrame Cellls 进行排序
问题描述
在 Pandas DataFrame 中修改(排序)一系列数据的最佳方法是什么?比如导入一些数据后,colums应该是升序的,但如果不是,我需要重新排序数据。数据正在从 acsv
导入到 apandas.df
中。
num_1 num_2 num_3
date
2020-02-03 17 22 36
2020-02-06 52 22 14
2020-02-10 5 8 29
2020-02-13 10 14 30
2020-02-17 7 8 19
理想情况下,我会在 Dataframe 中找到第二行(熊猫系列)作为要修复的记录:
num_1 num_2 num_3 num_4 num_5
date
2020-02-06 52 22 14 25 27
并将其修改为:(仅对 nums 1-3 进行排序,而不涉及第 4 列和第 5 列)
num_1 num_2 num_3 num_4 num_5
date
2020-02-06 14 22 52 25 27
我可以遍历 DataFrame 并通过将每一列与正确的列进行比较来检查序列数据乱序的索引。然后编写一个自定义排序器并将该记录重写回 Dataframe,但这似乎很笨重。
我不得不想象有一种更 Pythonic(熊猫)的方式来做这种事情。我只是在熊猫文档中找不到它。我不想对行重新排序,只需确保值在列中的顺序正确。
更新:我忘了提到最关键的方面之一。DataFrame 中还有其他列不应被触及。所以在下面的例子中,只有sort
(num_1, num_2, num_3
) 而不是其他的。我猜我可以使用已经提出的解决方案,拆分 DataFrame,对第一部分进行排序并将它们重新合并在一起。有替代方案吗?
解决方案
用这个 -
pd.DataFrame(list(df.apply(sorted, axis=1)),columns=df.columns, index=df.index)
推荐阅读
- angular - 使用 Angular 的 React 风格的受控组件(绑定输入)
- nlp - 如何使用转换器模型改进代码以加快词嵌入?
- c# - SignalR KeepAlive 值“此值不得超过 DisconnectTimeout 值的 1/3”是什么意思?
- android - 后按后停止重新加载片段
- visual-studio-code - neovim vscode 替换光标下的单词
- javascript - HTML 内容在 window.location.href 中不起作用
- javascript - Blender坐标到three.js
- c++ - 完全迷失在 C++ 中(第一周学习)
- react-native - React Native Redux Actions 功能问题
- prolog - Atom 出现在 Section T1 将所有 a 重写为 c