Цикл по суб-фреймам в Python - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть огромный фрейм данных pandas, называемый main_df , и я хотел разделить его на десять субкадров, чтобы было легче обрабатывать.Чтобы разделить фрейм данных, я сделал следующее:

df_split = np.array_split(main_df, 10)

Теперь я могу вызвать каждое подмножество, выполнив следующие действия:

df_split[0].head(10)
df_split[1].head(10)

и т. Д. *

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

for x in df_split:
    df_split[x] = "some action"

Будет ли это правильный путь циклически проходить через каждый подкадр df_split с циклом for?Будем весьма благодарны за любые предложения или рекомендации.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

df_split = np.array_split (main_df, 10)

для x в df_split: x = "some_action"

df_split [i] выдаст вам ошибку, поскольку вы не используете индекс для доступа к splitteddataframe.Вы непосредственно используете их как х.
0 голосов
/ 30 ноября 2018

Это был бы правильный способ циклического обхода каждого подкадра df_split с помощью цикла for?

Нет, ваше решение неверно.np.array_split возвращает list подкадров.x представляет отдельный фрейм данных, поэтому df_split[x] не имеет смысла.Вместо этого используйте enumerate:

for idx, df_sub in enumerate(df_split):
    df_split[idx] = some_function(df_sub)
0 голосов
/ 30 ноября 2018

Единственная проблема в реализации.Когда вы перебираете df_split, вы фактически зацикливаетесь непосредственно на фреймах данных, как видите:

df_split = np.array_split(df, 2)
for x in df_split :
    print(type(x))

<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>

Так что в основном не пытайтесь индексировать df_split с помощью x, так как это ужеdataframe.Просто сделайте:

for x in df_split:
    x = "some action"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...