"\" Прерывание строки приводит к перестановке столбцов данных панд в алфавитном порядке - PullRequest
0 голосов
/ 04 октября 2018

Мой код стал слишком большим, поэтому я начал использовать «\» для лучшей читаемости.Однако я заметил, что мои колонки переупорядочиваются в алфавитном порядке, делая это.

Кто-нибудь знает, как это предотвратить?

Вот код:

def unsettled_event(team_name,market):
    """Returns all bets tied to this specific event."""
    combos_list = df[(df["home"] == team_name) \
                     & (df["profit"].isnull()) \
                     & (df["market"] == market) \
                     & (df['settled_date']).isnull()].combo_id.dropna().unique()
    df_combos = df[df["combo_id"].isin(combos_list)].sort_values("combo_id") \
                [["combo_id", "home", "market", "odds", "selection", "bookmaker", "broker", "stake_adj", "is_won"]] 
    df_singles = df[(df["home"] == team_name) \
                    & (df["leg_size"] == 1) \
                    & (df["profit"].isnull()) \
                    & (df["market"] == market) \
                    & (df['settled_date']).isnull()] \
                [["combo_id", "home", "market", "selection", "odds", "bookmaker", "broker", "stake_adj", "is_won"]]
    return pd.concat([df_singles, df_combos], ignore_index=True)

Итак, в конце df.columns возвращает:

['bookmaker', 'broker', 'combo_id', 'home', 'is_won', 'market', 'odds', 'selection', 'stake_adj']

И он должен вернуть:

["combo_id", "home", "market", "selection", "odds", "bookmaker", "broker", "stake_adj", "is_won"]

1 Ответ

0 голосов
/ 04 октября 2018

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

df[["combo_id", "home", "market", "selection", "odds", "bookmaker", 
    "broker", "stake_adj", "is_won"]].head()

Под капотом порядок не имеет значения.Если это имеет значение в выводе, вам лучше быть откровенным об этом.

(Обратите внимание, что более половины времени, оказывается, это также не имеет значения в выводе.)


Вам также не нужны обратные слеши.

Например, это хорошо, и больше в стиле Python:

def unsettled_event(team_name,market):
    """Returns all bets tied to this specific event."""
    columns = ["combo_id", "home", "market", "selection", "odds",
               "bookmaker", "broker", "stake_adj", "is_won"]
    combos_list = df[(df["home"] == team_name)
                     & (df["profit"].isnull())
                     & (df["market"] == market)
                     & (df['settled_date']).isnull()].combo_id.dropna().unique()
    df_combos = df[df["combo_id"].isin(combos_list)].sort_values("combo_id")[columns]     
    df_singles = df[(df["home"] == team_name)
                    & (df["leg_size"] == 1)
                    & (df["profit"].isnull())
                    & (df["market"] == market)
                    & (df['settled_date']).isnull()][columns]
    return pd.concat([df_singles, df_combos], ignore_index=True)

Возможно, есть еще несколько изменений, которые вы можете внести, удалить некоторые лишние части, но это сутьЭто.[...] будет держать вещи вместе, несмотря на символы новой строки между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...