Как нарезать столбец dataframe на основе другого столбца - PullRequest
0 голосов
/ 08 мая 2018

У меня есть df, как это,

Main                        Length
Sri playnig well cricket    5
sri went out                2
Ram is in                   1 
Ram went to UK,US           2

Я пытаюсь нарезать df["Main"] based on df["Length"]

Мой ожидаемый результат:

Main                        Length
Sri p                       5
sr                          2
R                           1 
Ra                          2

Я пытался

def slicer(row):
    for i in df["Length"]:
        row['Main'].slice(0,i)
    return row

 df.apply(slicer,axis=1)

но я получаю, AttributeError: ("'str' object has no attribute 'slice'", 'occurred at index 0') , пожалуйста, помогите.

1 Ответ

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

Использовать apply с индексированием:

df['Main'] = df.apply(lambda x: x['Main'][:x['Length']], axis=1)

Или составить список с помощью zip, если нет значений NaN s:

df['Main'] = [a[:b] for a, b in zip(df['Main'], df['Length'])]

print(df)
    Main  Length
0  Sri p       5
1     sr       2
2      R       1
3     Ra       2

Для более общего решения можно использовать if-else:

df['Main'] = [a[:b] if len(a) < b else a for a, b in zip(df['Main'], df['Length'])]
print(df)
                       Main  Length
0  Sri playnig well cricket     100
1              sri went out       2
2                 Ram is in       1
3         Ram went to UK,US       2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...