#python #pandas
#python #панды
Вопрос:
У меня есть фрейм данных pandas
df = pd.DataFrame({'num_legs': [1, 34, 34, 104 , 6542, 6542 , 48383]})
Я хочу добавить a str
перед значением каждой строки.
Это str
ZZ00000
Загвоздка в том, что данные строки всегда должны быть = всего 7 символов
таким образом, желаемый результат будет
df = num_legs
0 ZZ00001
1 ZZ00034
2 ZZ00034
3 ZZ00104
4 ZZ06542
5 ZZ06542
6 ZZ48383
Поскольку столбец имеет тип int
, я думал о переходе на str
тип, а затем, возможно, с помощью регулярных выражений и некоторых str
манипуляций для достижения желаемого результата..
Есть ли более упрощенный способ, возможно, используя функцию с pandas
?
Ответ №1:
Используйте
df['num_legs'] = "ZZ" df['num_legs'].astype(str).str.rjust(5, "0")
Ответ №2:
Здесь вы могли бы использовать конкатенацию строк:
df["num_legs"] = 'ZZ' ('00000' str(df["num_legs"]))[-5:]
Идея здесь заключается в том, что, учитывая num_legs
, скажем, целочисленное значение 6542
, мы сначала формируем следующую строку:
000006542
Затем мы сохраняем правильные 5 символов, оставляя 06542
.
Ответ №3:
Вы также можете добавить, используя следующее:
'ZZ' df['num_legs'].astype(str).str.pad(width=5, side='left', fillchar='0')
Здесь вы добавляете свой текущий номер (преобразованный в строку) слева с нулями шириной до 5 и объединяете его с вашей строкой ‘ZZ’.
Ответ №4:
Используйте pythons .zfill()
df['num_legs']='zz' df['num_legs'].astype(str).str.zfill(7)
Ответ №5:
Вы могли бы попробовать это — используя регулярное выражение и цикл for: для строк циклы for обычно более эффективны, чем строковые методы pandas :
import re
variable = "ZZ00000"
df["new_val"] = [re.sub("d" f"{{{len(num)}}}$", num, variable)
for num in df.num_legs.astype(str)]
df
num_legs new_val
0 1 ZZ00001
1 34 ZZ00034
2 34 ZZ00034
3 104 ZZ00104
4 6542 ZZ06542
5 6542 ZZ06542
6 48383 ZZ48383
Ответ №6:
out = []
for nl in df["num_legs"]:
out.append(f'ZZ{nl:05d}')
Остальное зависит от ваших выходных манипуляций
Комментарии:
1.
for
По возможности следует избегать использования цикла python для перебора элементов в серии Pandas. Pandas поставляется с методами для достижения требуемого результата без необходимости цикла for.