'Мне нужно создать новый столбец, выбирая конкретную информацию из существующего столбца. В этом случае я хочу создать новый столбец с именем «name», выбирая только имена из столбца «id_name».
import pandas as pd
df = {'id': [234235, 543, 34234],
'id_name': ['234235nombre: Paco_ID','543nombre: Lucia_ID','34234nombre:Marta_ID'],
'age': [35, 29, 40]}
df= pd.DataFrame(df)
df
id id_name age
0 234235 234235nombre: Paco_ID 35
1 543 543nombre: Lucia_ID 29
2 34234 34234nombre:Marta_ID 40
df['name'] = df['id_name'].find("nombre: ")+8:df[id_name].find("_ID")
File "<ipython-input-34-4e5aa874634b>", line 1
df['name'] = (df[id_name].find("nombre: ")+8):(df[id_name].find("_ID"))
^
SyntaxError: invalid syntax
Ожидаю в качестве вывода следующую таблицу:
id id_name age name
0 234235 234235nombre: Paco_ID 35 Paco
1 543 543nombre: Lucia_ID 29 Lucia
2 34234 34234nombre:Marta_ID 40 Marta
решаемые !!!!!! (спасибо Ромми):
df['name']=df.id_name.str.split(':').str[1].str.split('_').str[0]
Мне также нужна альтернатива для целых чисел. Кто-нибудь знает, как я могу создать новый столбец с именем 'new_hour', извлекающий часы из столбца 'time' со следующим новым вводом?
Введите:
import pandas as pd
df = {'time': ['[{"hour":"00:00","postCount":"12"...','[{"nexthour":"05:00","postCount":"3"...'],
'age': [35, 29]}
df= pd.DataFrame(df)
Фактическая выработка:
time age
0 [{"hour":"00:00","postCount":"12"... 35
1 [{"nexthour":"05:00","postCount":"3"... 29
Код должен быть примерно таким, но он не работает:
df['new_hour'] = df.time.str.split('"hour":').str[1].str.split('"').str[0]
df.head()
Желаемый вывод:
time age new_hour
0 [{"hour":"00:00","postCount":"12"... 35 00:00
1 [{"nexthour":"05:00","postCount":"3"... 29 05:00