построение субкадров с итерацией - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть фрейм данных 1000 X 10.

Один столбец, имеет 6 уникальных числовых значений

df['column'].value_counts() = [ 0,2,5,8,9,10]

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

Для каждого уникального значения столбца, чтобы создать меньший набор данных, содержащий все строки, которые имеют это уникальное значение в этом столбце. В моем случае, 6 меньших наборов данных, для каждого из уникальных значений

Я знаю, как это сделать без итерации. Например

df_0 = df[df['column'] == 0]

df_1 = df[df['column'] == 1]

Но как мне это автоматизировать?

Я думал о чем-то вроде

for value in df['column'].value_counts():
    df_value = df[df['column'] == value]

но он работает только для первого значения и останавливается.

1 Ответ

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

Вы можете легко делать то, что вы хотите с Python и пандами:

import pandas as pd

data = {1: [1, 2, 3, 1, 2, 3, 4, 5, 6, 1]}
data.update({val: range(10) for val in range(2, 101)})
df = pd.DataFrame(data)

print('df_shape =', df.shape)

for value in sorted(df[1].unique()):
    sub_df = df[df[1] == value]
    print(
        'value = {}, sub_df_shape = {}'
        .format(value, sub_df.shape))

Выход:

df_shape = (10, 100)
value = 1, sub_df_shape = (3, 100)
value = 2, sub_df_shape = (2, 100)
value = 3, sub_df_shape = (2, 100)
value = 4, sub_df_shape = (1, 100)
value = 5, sub_df_shape = (1, 100)
value = 6, sub_df_shape = (1, 100)

EDIT

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

ans = dict()
for value in sorted(df[1].unique()):
    ans[value] = df[df[1] == value]

Вы можете даже создать отдельную переменную для каждого субкадра (хотя это что-то странное, и я бы избегал делать это при любых обстоятельствах):

for value in sorted(df[1].unique()):
    sub_df = df[df[1] == value]
    exec('df_{} = sub_df'.format(value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...