У меня есть следующий dataframe:Панда подстрока
contract
0 WTX1518X22
1 WTX1518X20.5
2 WTX1518X19
3 WTX1518X15.5
Мне нужно, чтобы добавить новый столбец, содержащие все следующие последний «X» из первого столбца. Таким образом, результат будет:
contract result
0 WTX1518X22 22
1 WTX1518X20.5 20.5
2 WTX1518X19 19
3 WTX1518X15.5 15.5
Так что я полагаю, что я в первую очередь необходимо найти индекс позиции строки последнего «X» (потому что там может быть больше, чем один «X» в строке). Затем получите подстроку, содержащую все, что соответствует этой позиции индекса для каждой строки.
EDIT:
мне удалось получить позицию индекса «X» в соответствии с требованиями:
df.['index_pos'] = df['contract'].str.rfind('X', start=0, end=None)
Но я до сих пор не могу показаться, чтобы получить новый столбец, содержащий все символы после ' ИКС'. Я пытаюсь:
df['index_pos'] = df['index_pos'].convert_objects(convert_numeric=True)
df['result'] = df['contract'].str[df['index_pos']:]
Но это просто дает мне пустой столбец под названием «результат». Это странно, потому что, если я следующий, то он работает правильно:
df['result'] = df['contract'].str[8:]
Так что я просто нужен способ, чтобы не жёстко «8», но вместо этого использовать столбец «index_pos». Какие-либо предложения?
Я не хочу звучать как перл-фанбой, но вы пробовали регулярное выражение? Что-то простое, как 'df. contract.str.extract (". * X (. *)") 'вероятно, уже работает. – cel