我在下面制作了一个示例 Dataframe 。
import pandas as pd
col1=['1M','1M','1M','1M','1M','1M','1M','1M','1M','1M','1M','1M']
col11=['2M','2M','2M','2M','2M','2M','2M','2M','2M','2M','2M','2M']
col111=['3M','3M','3M','3M','3M','3M','3M','3M','3M','3M','3M','3M']
col1111=['4M','4M','4M','4M','4M','4M','4M','4M','4M','4M','4M','4M']
final_col1=col1+col11+col111+col1111
#col2=['1M','2M','3M','4M','5M','6M','7M','8M','9M','10M','11M','12M']
col2=['1M','2M','3M','4M']
final_col2=12*col2
col22=['1M','2M','3M','4M']
col23=['1M','2M','3M','4M']
df1=pd.DataFrame()
df1['col1']=final_col1
df1['col2']=final_col2
我想对dataframe进行排序,以便'col1'和'col2'的顺序互换。真实的数据有超过100万行和其他列,所以我不能只互换'col1'和'col2'。提前感谢您。
df3是预期输出:
df2=pd.DataFrame()
df2['col2']=final_col1
df2['col1']=final_col2
cols=['col1','col2']
df3=df2[cols]
添加样本输入数据和输出数据。输入数据
col1 col2 data
0 1M 1M 1
1 1M 2M 2
2 1M 3M 3
3 1M 4M 4
4 1M 1M 5
5 1M 2M 6
6 1M 3M 7
7 1M 4M 8
8 1M 1M 9
9 1M 2M 10
10 1M 3M 11
11 1M 4M 12
12 2M 1M 13
输出数据:
col1 col2 data
0 1M 1M 1
1 2M 1M 13
2条答案
按热度按时间ojsjcaue1#
如果我理解正确的话,您希望根据
col2
的顺序对col1
的值进行排序。假设您需要将
col2
的确切顺序与重复项的顺序相匹配,请使用merge
重新索引行:输出:
bf1o4zei2#
要在pandas DataFrame中交换列的顺序,可以使用索引运算符[]并按所需的顺序传递列。
下面是您可以如何做到这一点:
上面的代码创建了原始 Dataframe df1的一个副本,然后将列名['col2','col1']的列表传递给索引操作符[]。这将创建一个新的 Dataframe df2,其中列col2和col1按所需的顺序排列。
你也可以把上面的代码串在一行中:
这将直接从df1中选择所需的列,并创建结果 Dataframe 的副本,其中列被互换。
在任一情况下,所得到的 Dataframe df2将具有按期望顺序的列col2和col1。