Присвоение кадра данных строке, генерируемой циклом for - PullRequest
0 голосов
/ 17 октября 2019

У меня есть датафрейм, как показано ниже

my_df = pd.DataFrame({
    'Imp':  [1,2,3,4,5,6,7,8,9,0],
    'Apple':  ['a','b','c','d','e','f','g','h','i','j']
})
print(my_df)
  Imp   Apple
0   1   a
1   2   b
2   3   c
3   4   d
4   5   e
5   6   f
6   7   g
7   8   h
8   9   i
9   0   j

Тогда у меня есть функция, как показано ниже. Цель этой функции - нарезать исходный df на основе некоторой логики. Логика здесь не важна, и функция работает нормально.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу назначить фрагменты фрагмента данных, назначенные для имени 'df1', 'df2' .. .

Я вставил dfi = df.loc[0:i,], но я делаю что-то неправильно в этой самой строке, и я не могу понять, что.

Ожидаемый вывод - когда я печатаю (df1)я должен получить первый кусок, который был создан с помощью этой функции. Кто-нибудь может помочь?

def func(df):
    i=1
    while len(df)!=0:
        dfi=df.loc[0:i,]
        df=df.loc[i:,].reset_index(drop=True)
        i=i+1
        if len(df)==0:
            break 

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Создайте словарь, в котором вы нарежете df's,

что-то похожее на код, приведенный ниже

def func(df, d = {}):
    i=1
    while len(df)!=0:
        d[f"df{i}"] = df.loc[0:i,]
        ...
        i+=1

Вывод:

d = {
"df1": sliced df1,
"df2": sliced df2,
...
}
1 голос
/ 17 октября 2019

Это может сделать это. Это присваивает значения переменным df1, df2, как вы упомянули

def func(df):
    i=1
    while len(df)!=0:
        globals()["df"+str(i)]=df.loc[0:i,]
        df=df.loc[i:,].reset_index(drop=True)
        i=i+1
        if len(df)==0:
            break 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...