【发布时间】:2020-08-07 03:06:15
【问题描述】:
我有一个类似于下面结构的数据框:
我只想重新洗牌以获得以下顺序(无需计算):
这两个序列的顺序应该是 Amount、Buy、Sell。我知道Amount 字段始终是数字,Buy 字段仅包含Buy,而Sell 字段仅包含Sell。表格中可能还有更多的 Amount03、Buy03 和 Sell03,您无需进行任何更改(例如,正确的订单)!
为了重现这个问题,我附上了下面的示例数据框:
main = {'ID': [1,2,3],
'Name1': ['Julius', 'Peter', 'Marcus'],
'Postcode': [58921, 69751, 60314],
'Buy01': ['Buy', 'Buy', ''],
'Sell01': ['', '', 'Sell'],
'Amount01': [1500, 1200, 3000],
'ELO': [15, 18, 15],
'Buy02': ['Buy', ' ', ''],
'Sell02': ['', 'Sell', 'Sell'],
'Amount02': [1600, 1100, 3620],
'Height': [178, 165, 174],
'Weight': [96, 85, 73],
}
df = pd.DataFrame(main, columns = ['ID', 'Name1', 'Postcode', 'Buy01', 'Sell01', 'Amount01', 'ELO', 'Buy02', 'Sell02', 'Amount02', 'Height', 'Weight'])
我正在寻找通用解决方案。任何帮助/建议将不胜感激!
【问题讨论】:
-
我想知道这样做的目的是什么。列的排列并不是什么大问题。它更多的是在演示方面。在执行操作时,您应该始终按名称引用列,而不是数据框中的位置。例如,与普通的 numpy 矩阵相比,这是 pandas 的一大优势。因此,请考虑重新排列列可能不是您尝试做的最佳方法。
标签: python pandas numpy columnsorting