Как объединить несколько столбцов в панде Dataframe с помощью apply? - PullRequest
0 голосов
/ 10 мая 2018

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

def date_creation(a,b,c):
    date=str(a) +'/'+str(b)+'/'+str(c)
    return date
df.loc["Test_FL_DATE"]=df[:,["DAY_OF_MONTH","MONTH","AYEAR"]].apply(date_creation)

Образец ввода

enter image description here

Образец вывода

enter image description here

Однако, если я хочу сделать ту же работу, используя apply или lambda.На самом деле я пытаюсь, но это не работает.код как ниже, который я считаю, не является правильным.Заранее спасибо за помощь.

def date_creation(a,b,c):
date=str(a) +'/'+str(b)+'/'+str(c)
return date
df.loc["Test_FL_DATE"]=df[:,["DAY_OF_MONTH","MONTH","AYEAR"]].apply(date_creation)

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вероятно, проще всего использовать pd.Series.str.cat, который объединяет одну последовательность строк с другими сериями.

df['Test_FL_Date'] = (df['DAY_OF_MONTH']
    .astype(str)
    .str
    .cat([df['MONTH'], df['AYEAR'], sep='/'))
0 голосов
/ 10 мая 2018

Здесь возможно использование при необходимости lambda функция:

cols = ["DAY_OF_MONTH","MONTH","AYEAR"]
df["Test_FL_DATE"] = df[cols].astype(str).apply(lambda x: '/'.join(x))

Или:

df["Test_FL_DATE"] = df[cols].apply(lambda x: '/'.join(x.astype(str)))

Но лучше:

df["Test_FL_DATE"] = df[["DAY_OF_MONTH","MONTH","AYEAR"]].astype(str).apply('/'.join)

И более быстрое решениепросто присоединиться к +:

df["Test_FL_DATE"] = (df["DAY_OF_MONTH"].astype(str) + '/' +
                      df["MONTH"].astype(str) + '/' +
                      df["AYEAR"].astype(str))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...