#python #dataframe
#python #фрейм данных
Вопрос:
У меня есть фрейм данных, который имеет 2 столбца, я пытаюсь создать новый столбец column3
с логикой объединения значений column1
(String) и column2
(int) с разделителем (‘_’).
Ниже приведены несколько начальных значений фрейма данных:
column1 column2
0 Andy 1
1 Ashok 4
2 Collins 7
Ниже приведены мои несколько попыток :
df['column3'] = df['column1'].apply(lambda x: x '_' str(df['column2']))
df['column3'] = df['column1'] '_' str(df['column2'])
df['column3'] = pd.Series(df['column1']).str.cat(str(df['column2']), sep='_')
Ниже приведен результат:
0 Andy_0 2n1 2n2 1n3 ...
1 Ashok_0 2n1 2n2 1n3 ...
2 Collins_0 2n1 2n2 1n3 ...
Но ( 2n1 2n2 1n3 ...
) добавляется к значению результирующего столбца3, и только одно нулевое значение (0) добавляется к результирующему столбцу3.
Пожалуйста, дайте мне знать, где что-то не так?
Ответ №1:
вам не нужно делать это таким сложным. фрейм данных поддерживает такую операцию:
df.column1 "_" df.column2.astype("str")
Ответ №2:
Вы хотите это:
def concat_cols(row):
return "{}_{}".format(row['column1'], row['column2'])
df['column3'] = df.apply(concat_cols, axis = 1)
Ключевым аспектом является axis = 1
просмотр фрейма данных по строкам, а не по столбцам. В приведенном выше коде df['column2']
in функция lambda ссылалась на весь столбец, а не только на значение строки.