Извлечь подстроку из всех строк во фрейме данных pandas - PullRequest
0 голосов
/ 21 мая 2018

У меня есть pd.DataFrame, подобный следующему:

pd.DataFrame(["SSDILFJKSIDHFKJSHDKUFH", "SLIDFSOIUDHFIUSDHF", "K<NFSKJGHSDUFSDK"], ["SKDJF", "FDKSJFSSDF", "SIDFDS"])

Я хочу извлечь подпоследовательности из первого столбца, но длина нужной подпоследовательности зависит от длины последовательности во второмколонка.Я хочу извлечь символы из 2-го символа в столбце col1 в n-й символ в столбце col1, где n определяется как количество символов в соответствующей строке в столбце col2.

Как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Это один из способов использования списка:

df = pd.DataFrame({'A': ["SSDILFJKSIDHFKJSHDKUFH", "SLIDFSOIUDHFIUSDHF",
                         "K<NFSKJGHSDUFSDK"]},
                  index=["SKDJF", "FDKSJFSSDF", "SIDFDS"])

df['B'] = [j[1:i+1] for i, j in zip(s.index.map(len), s.values)]

print(df)

                                 A           B
SKDJF       SSDILFJKSIDHFKJSHDKUFH       SDILF
FDKSJFSSDF      SLIDFSOIUDHFIUSDHF  LIDFSOIUDH
SIDFDS            K<NFSKJGHSDUFSDK      <NFSKJ
0 голосов
/ 21 мая 2018

Вы можете попробовать с apply

df
Out[115]: 
        index                       0
0       SKDJF  SSDILFJKSIDHFKJSHDKUFH
1  FDKSJFSSDF      SLIDFSOIUDHFIUSDHF
2      SIDFDS        K<NFSKJGHSDUFSDK
df.apply(lambda x : x[0][len(x['index'])],axis=1)
Out[116]: 
0    F
1    H
2    J
dtype: object

Или просто с помощью python

[y[len(x)]for x,y in zip(df['index'],df[0])]
Out[117]: ['F', 'H', 'J']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...