python - 在 pandas df 中按顺序排列值

标签 python python-2.7 python-3.x pandas

我在 pandasas df 中有一个表:

p_id_x    p_id_y    count
  a         b         2
  b         c         4
  a         c         8
  d         a         1 
  x         a         6
  m         b         3
  c         z         7

我想写一个函数

def function_combination(p_id):
    df[['p_id_x', 'p_id_y']] = df[['p_id_x', 'p_id_y']].apply(sorted, axis=1)
    df.groupby(['p_id_x', 'p_id_y'], as_index=False)['count'].sum()

(功能未完成且有错误。) 我通过单独运行函数内的代码得到了结果。

df['p_id_x','p_id_y']

p_id_x  p_id_y
  a         b
  b         c
  a         c
  a         d
  a         x
  b         m
  c         z

但是我希望我的输出看起来像这样:

p_id_x    p_id_y
  a         b
  a         c
  a         d
  a         x         
  b         c
  b         m
  c         z

即首先是 a,然后是 b,最后是 c 的所有组合。

这只是我的行的一部分。我有 20 多个这样的行。 有没有办法做到这一点,以便我可以将我的代码放在函数中?

最佳答案

您需要添加sort_values按列p_id_x:

df[['p_id_x', 'p_id_y']] = df[['p_id_x', 'p_id_y']].apply(sorted, axis=1)
df = df.groupby(['p_id_x', 'p_id_y'], as_index=False)['count'].sum().sort_values('p_id_x')

print (df)
  p_id_x p_id_y  count
0      a      b      2
1      a      c      8
2      a      d      1
3      a      x      6
4      b      c      4
5      b      m      3
6      c      z      7

print (df[['p_id_x','p_id_y']])
  p_id_x p_id_y
0      a      b
1      a      c
2      a      d
3      a      x
4      b      c
5      b      m
6      c      z

通过评论编辑 - 使用 boolean indexing :

mask = (df.p_id_x == 'a') & (df['count'] > 3)
print (mask)
0    False
1     True
2    False
3     True
4    False
5    False
6    False
dtype: bool

print (df[mask])
  p_id_x p_id_y  count
1      a      c      8
3      a      x      6

或者query :

print (df.query("p_id_x == 'a' and count > 3"))
  p_id_x p_id_y  count
1      a      c      8
3      a      x      6

关于python - 在 pandas df 中按顺序排列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779184/

相关文章:

python - xbbg 的 BBG_ROOT(简化的 blpapi 包)

python - 无法计算 Pandas 中基于货币的列数据的总和

python - 为什么两个 tkinter 条目使用相同的编号?

python - 了解 celery 工作节点

python - 对于 X 秒,每 Y 秒做一些 Action

python - Openpyxl 不会以只读模式关闭 Excel 工作簿

python - 如何在 python 中区分 `0` 和 `False`

python - 使用 Pandas 求解多个线性方程

python - 如何使用tix.DirSelectDialog?

google-app-engine - GAE SDK 1.9.5 和 InvalidCertificateException