Concat 2 столбца в новой фразе столбца, используя панды DataFrame - PullRequest
1 голос
/ 16 мая 2019

У меня есть DataFrame, подобный этому:

>>> df = pd.DataFrame({'id_sin':['s123','s124','s125','s126','s127'],
                   'num1':[12,10,23,6,np.nan],
                   'num2':['BG','TC','AB','RC',np.nan],
                   'fr':[1,1,1,1,0],
})
>>> df
   fr id_sin  num1 num2
0   1   s123    12   BG
1   1   s124    10   TC
2   1   s125    23   AB
3   1   s126     6   RC
4   0   s127   NaN  NaN

Я хочу объединить столбцы num1 & num2 (num2 is num1) в такой фразе, где fr равно 1:

   fr id_sin  num1 num2    phrase
0   1   s123    12   BG  BG is 12
1   1   s124    10   TC  TC is 10
2   1   s125    23   AB  AB is 23
3   1   s126     6   RC   RC is 6

Я пробовал это, но не работает:

df['phrase'] = str(df['num2']) + ' is ' + str(df['num1'])

1 Ответ

1 голос
/ 16 мая 2019

Редактировать
если вы хотите, чтобы у num1 не было десятичного числа .0, конвертируйте его в Int64:

df.num1 = df.num1.astype('Int64')

Out[32]:
  id_sin  num1 num2  fr
0   s123    12   BG   1
1   s124    10   TC   1
2   s125    23   AB   1
3   s126     6   RC   1
4   s127   NaN  NaN   0

Попробуйте Series.str.cat

df.num2.str.cat(df.num1.astype(str), sep=' is ')

Out[2055]:
0    BG is 12
1    TC is 10
2    AB is 23
3     RC is 6
4         NaN
Name: num2, dtype: object

В комментарии @rafael. Его работы, просто опечатка в нем вызывает ошибку. Это:

dn['num2'].astype(str) + ' is ' + dn['num1'].astype(str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...