我正在尝试将每一列中包含特定字符的每一行移动到数据框的底部.....
Index Closer Running
0 4 AQ
1 - AQ
2 - AD
3 2 AP
4 9 AP
5 5 AQ
我试图将包含“-”的Closer列中的每一行移动到数据框的底部,这样我得到的数据框看起来像这样,我该怎么做?
Index Closer Running
0 4 AQ
1 2 AP
2 9 AP
3 5 AQ
4 - AQ
5 - AD
答案 0 :(得分:6)
IIUC,这就是您所需要的。
m = df.Closer.str.isdigit()
df[m].append(df[~m]).reset_index(drop=True)
输出
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
答案 1 :(得分:2)
一种解决方案是首先过滤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
答案 2 :(得分:2)
使用新的数据框,以根据条件进行过滤,然后将两个数据框串联起来。
例如假设您的数据在df
df1 = pd.DataFrame()
df1 = df1.append(df[df["Closer"] != "-"])
df1 = df1.append(df[df["Closer"] == "-"])
这是屏幕截图:
答案 3 :(得分:1)
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