Извините, если этот вопрос уже задавался. Я не могу найти ответ в Интернете.
У меня есть DF, который выглядит так:
Positions=pd.DataFrame( {'position':rateQualityOutTrim['position'].unique() })
Positions
position
0 CITI_52299G66_201210
1 CITI_52299G66_201210
2 CITI_52299G66_202374
3 CITI_52299G66_202734
4 CITI_52299G66_204130
5 CITI_52299G66_204685
6 CITI_52299G66_205140
7 CITI_52299G66_206425
new=Positions['position'].str.split(pat = "_", n=2, expand=False)
new
0 [CITI, 52299G66, 201210]
1 [CITI, 52299G66, 201210]
2 [CITI, 52299G66, 202374]
3 [CITI, 52299G66, 202734]
4 [CITI, 52299G66, 204130]
5 [CITI, 52299G66, 204685]
Я хочу извлечь каждый элемент отдельно.
Я использовал это:
Positions.position.apply(lambda x: x.split("_")[0])
0 CITI
1 CITI
2 CITI
3 CITI
Positions.position.apply(lambda x: x.split("_")[-1])
0 201210
1 201210
2 202374
3 202734
4 204130
5 204685
Средний элемент, который я изо всех сил пытаюсь извлечь. Любая помощь приветствуется. Спасибо
это не сработало, я боюсь, что он говорит «индекс списка вне допустимого диапазона»





Использовать индексацию по str:
df=Positions['position'].str.split(pat = "_")
print (df)
0 [CITI, 52299G66, 201210]
1 [CITI, 52299G66, 201210]
2 [CITI, 52299G66, 202374]
3 [CITI, 52299G66, 202734]
4 [CITI, 52299G66, 204130]
5 [CITI, 52299G66, 204685]
6 [CITI, 52299G66, 205140]
7 [CITI, 52299G66, 206425]
Name: position, dtype: object
print (df.str[0])
print (df.str[1])
print (df.str[2])
Или создайте новый DataFrame:
df = Positions['position'].str.split(pat = "_", expand=True)
print (df)
0 1 2
0 CITI 52299G66 201210
1 CITI 52299G66 201210
2 CITI 52299G66 202374
3 CITI 52299G66 202734
4 CITI 52299G66 204130
5 CITI 52299G66 204685
6 CITI 52299G66 205140
7 CITI 52299G66 206425
И при необходимости выберите каждый столбец:
print (df[0])
print (df[1])
print (df[2])
Создание нового DF еще лучше. Большое вам спасибо... PS: кажется, что четвертая колонка была создана с "Нет"? 1 CITI 52299G66 201210 Нет 2 CITI 52299G66 202374 None 3 CITI 52299G66 202734 None 4 CITI 52299G66 204130 None 5 CITI 52299G66 204685 None 6 CITI 52299G66 205140 None
@SBad - хм, может быть, в некоторых данных 3 раз _
Конечно, я проверю это, но независимо от того, ваше предложение работает нормально. Спасибо, сэр!
Positions['position'].str.split("_").str[1]?