Панды - разделение значений столбца на основе другого столбца - PullRequest
0 голосов
/ 20 марта 2019

Как я могу нарезать значения столбцов на основе первых и последних символов местоположения символов из двух других столбцов?

Вот код для примера df:

import pandas as pd

d = {'W': ['abcde','abcde','abcde','abcde']}
df = pd.DataFrame(data=d)

df['First']=[0,0,0,0]
df['Last']=[1,2,3,5]
df['Slice']=['a','ab','abc','abcde']

print(df.head())   

Кодовый вывод:

enter image description here

Желаемый выход:

enter image description here

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Я не уверен, что это будет быстрее, но похожий подход будет следующим:

df['Slice'] = df.apply(lambda x: x[0][x[1]:x[2]],axis=1)

Вкратце, вы проходите каждую строку (axis=1) и применяете пользовательскую функцию.Функция берет строку (хранится как x) и разрезает первый элемент, используя второй и третий элементы в качестве индексов для среза (это часть lambda).Я буду рад подробнее рассказать, если это не ясно.

2 голосов
/ 20 марта 2019

Просто сделайте это для цикла, вы можете беспокоиться о скорости, пожалуйста, отметьте Для циклов с пандами - Когда мне следует позаботиться?

df['Slice']=[x[y:z]for x,y,z in zip(df.W,df.First,df.Last)]
df
Out[918]: 
       W  First  Last  Slice
0  abcde      0     1      a
1  abcde      0     2     ab
2  abcde      0     3    abc
3  abcde      0     5  abcde
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...