Панды перемещают строки в зависимости от состояния - PullRequest
2 голосов
/ 26 сентября 2019

Я пытаюсь переместить каждую строку, содержащую определенный символ в столбце, в нижнюю часть кадра данных .....

    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

Ответы [ 4 ]

6 голосов
/ 26 сентября 2019

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
2 голосов
/ 26 сентября 2019

Используйте новый фрейм данных, чтобы отфильтровать условие, а затем объединить два фрейма данных.

Например, предположим, что ваши данные в df

df1 = pd.DataFrame()
df1 = df1.append(df[df["Closer"] != "-"])
df1 = df1.append(df[df["Closer"] == "-"])

Вот скриншот:

enter image description here

2 голосов
/ 26 сентября 2019

Единственное решение состоит в том, чтобы сначала отфильтровать 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
1 голос
/ 26 сентября 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...