У меня огромный кадр данных 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? Любые предложения или рекомендации будут высоко оценены.
Будет ли это правильным способом прокрутки каждого подкадрового кадра df_split с циклом for?
Нет, ваше решение неверно. np.array_split
возвращает list
суб-данных. x
представляет собой собственный df_split[x]
, поэтому df_split[x]
не имеет смысла. Вместо этого используйте enumerate
:
for idx, df_sub in enumerate(df_split):
df_split[idx] = some_function(df_sub)
Единственная проблема заключается в реализации. Когда вы выполняете итерацию по df_split
вы фактически зацикливаете непосредственно на dataframes, как вы можете видеть:
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
, поскольку он уже является фреймворком данных. Просто выполните:
for x in df_split:
x = "some action"
df_split = np.array_split (main_df, 10)
для x в df_split: x = "some_action"
df_split [i] даст вам сообщение об ошибке, потому что вы не используете индекс для доступа к разделенному кадру данных. Вы используете их как x.