строка Python не работает в функции pd.Series.map - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть серия pd,

s = pd.Series([1, 2, 3, np.nan])

когда я это сделаю,

s.map('this is a string {}'.format)
[out]
0    this is a string 1.0
1    this is a string 2.0
2    this is a string 3.0
3    this is a string nan   

как я могу получить тот же результат, используя форматированную строку?

s.map(f'this is a string {?}') ?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Решение возможно без map / apply + lambda. Вы можете назначить список непосредственно серии. Понимание списка часто более эффективно, поскольку pd.Series.apply не векторизовано:

df = pd.DataFrame({'s': pd.Series([1, 2, 3, np.nan])})

df['t'] = [f'this is a string {i}' for i in df['s']]

print(df)

     s                     t
0  1.0  this is a string 1.0
1  2.0  this is a string 2.0
2  3.0  this is a string 3.0
3  NaN  this is a string nan
0 голосов
/ 11 сентября 2018

Использование лямбда-функции с {x}:

print (s.map(lambda x: f'this is a string {x}'))
#alternative with different value
#print (s.map(lambda val: f'this is a string {val}'))
0    this is a string 1.0
1    this is a string 2.0
2    this is a string 3.0
3    this is a string nan
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...