Как объединить два кадра данных pandas после замены данных в одной функции - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь написать функцию, которая принимает фрейм данных, дублирует его, изменяет значения в одном из столбцов и затем объединяет их вместе.Например:

df1 выглядит как

column1 | column2 | column3
keyword1|    1    |   20
keyword2|    1    |   40
keyword3|    1    |   60

, и я хочу функцию, которая создает это:

column1 | column2 | column3
keyword1|    1    |   20
keyword2|    1    |   40
keyword3|    1    |   60
keyword1|    2    |   20
keyword2|    2    |   40
keyword3|    2    |   60

Я пробовал это:

def add_mobile(df):

    mobiledf = df.copy(deep=True)
    mobiledf['column2'].replace(1,2,inplace=True)

    df = pd.concat([df,mobiledf],axis=0)

однако, когда я ставлю df1, хотя эта функция возвращает df1 неотредактированным.Если я тогда посмотрю на df1.shape, это не изменилось.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Первая функция

Вы не возвращали df, поэтому он ничего не делал:

def add_mobile(df):

    mobiledf = df.copy(deep=True)
    mobiledf['column2'].replace(1,2,inplace=True)

    df = pd.concat([df,mobiledf],axis=0)

    return df

Вторая функция:

Вы не объединяли:

def add_mobile(df):

    mobiledf = df.copy(deep=True)
    mobiledf['column2'].replace(1,2,inplace=True)

    return pd.concat([df,mobiledf],axis=0)

Объединение не является функцией на месте

Finlay, сцепление не является функцией на месте, поэтому вы всегда должны получить результат:

df = add_mobile(df)
0 голосов
/ 08 июня 2018

enter image description here Это сработало для меня:

def add_mobile(df):
   mobiledf = df.copy(deep=True)
   mobiledf['column2'].replace(1,2,inplace=True)
   df = pd.concat([df,mobiledf],axis=0,ignore_index=True)
   return df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...