[英]Pandas move row based on condition
我正在尝试将列中包含特定字符的每一行移动到 dataframe 的底部.....
Index Closer Running
0 4 AQ
1 - AQ
2 - AD
3 2 AP
4 9 AP
5 5 AQ
我正在尝试将 Closer 列中包含“-”的每一行移动到 dataframe 的底部,所以我的结果 dataframe 看起来像这样,我该怎么做 Z34D1F91FB2E514B8576FAB1A75A8?
Index Closer Running
0 4 AQ
1 2 AP
2 9 AP
3 5 AQ
4 - AQ
5 - AD
IIUC,这就是你需要的。
m = df.Closer.str.isdigit()
df[m].append(df[~m]).reset_index(drop=True)
Output
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
一种解决方案是首先过滤 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
IIUC
df.loc[(~df.Closer.str.isdigit()).sort_values(kind='mergesort').index]
Out[24]:
Index Closer Running
0 0 4 AQ
3 3 2 AP
4 4 9 AP
5 5 5 AQ
1 1 - AQ
2 2 - AD
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.