Pandas - 按列排序

4

I have a pandas data frame known as "df":

  x y
0 1 2
1 2 4
2 3 8

我正在将它分成两个框架,然后尝试合并起来:
df_1 = df[df['x']==1]  
df_2 = df[df['x']!=1] 

我的目标是按照相同的顺序获取它,但是当我连接时,我得到了以下内容:

frames = [df_1, df_2]
solution = pd.concat(frames)
solution.sort_values(by='x', inplace=False)

  x y
1 2 4
2 3 8
0 1 2

问题在于我需要将“x”值按照我提取时的相同顺序放回到新数据框中。有解决方案吗?
4个回答

3
使用.loc指定您想要的顺序。选择原始索引。
solution.loc[df.index]

或者,如果您信任每个组件中的索引值,那么

solution.sort_index()

在这里输入图像描述

设置

df = pd.DataFrame([[1, 2], [2, 4], [3, 8]], columns=['x', 'y'])

df_1 = df[df['x']==1]  
df_2 = df[df['x']!=1] 

frames = [df_1, df_2]
solution = pd.concat(frames)

0

当您使用以下代码对解决方案进行排序时 solution.sort_values(by='x', inplace=False) 您需要指定inplace = True。这样就可以解决问题了。


0

试试这个:

In [14]: pd.concat([df_1, df_2.sort_values('y')])
Out[14]:
   x  y
0  1  2
1  2  4
2  3  8

0

根据以下关于df的假设:

  1. xy不一定按顺序排列。
  2. 索引是有序的。

只需按索引对结果进行排序:

df = pd.DataFrame({'x': [1, 2, 3], 'y': [2, 4, 8]})
df_1 = df[df['x']==1]  
df_2 = df[df['x']!=1] 
frames = [df_2, df_1]
solution = pd.concat(frames).sort_index()

现在,solution 的样子是这样的:

   x  y
0  1  2
1  2  4
2  3  8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接