熊猫根据条件移动行

Ale*_*ini 1 python pandas

我试图将每一列中包含特定字符的每一行移动到数据框的底部.....

    Index  Closer  Running
      0      4      AQ
      1      -      AQ
      2      -      AD
      3      2      AP
      4      9      AP
      5      5      AQ
Run Code Online (Sandbox Code Playgroud)

我试图将包含“-”的Closer列中的每一行移到数据框的底部,这样我得到的数据框看起来像这样,我该如何去做?

      Index  Closer  Running
      0      4        AQ
      1      2        AP
      2      9        AP
      3      5        AQ
      4      -        AQ
      5      -        AD
Run Code Online (Sandbox Code Playgroud)

moy*_*oys 6

IIUC,这就是您所需要的。

m = df.Closer.str.isdigit()
df[m].append(df[~m]).reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

输出量

Index   Closer  Running
0   0   4   AQ
1   3   2   AP
2   4   9   AP
3   5   5   AQ
4   1   -   AQ
5   2   -   AD
Run Code Online (Sandbox Code Playgroud)


Por*_*Kev 5

一行解决方案是首先过滤 DataFrame,选择带“-”的行和不带“-”的行。然后,您创建一个新的 DataFrame,它最初不包含带有“-”的行,第二个 DF 仅存储带有“-”的行。然后你将它们连接在一起。

d = pd.DataFrame(data = {'Closer':[4,'-','-',2,9,5],'Running':'AQ','AQ','AD','AP','AP','AQ']})
d = pd.concat([d[d.Closer!='-'],d[d.Closer=='-']])
d
Run Code Online (Sandbox Code Playgroud)