Ваша ошибка TypeError вызвана тем, что .loc
принимает скобки, например .loc[i, j]
, а не .loc(i, j)
import pandas as pd
import numpy as np
# Make new columns and fill them with nulls
df['agr1'] = np.nan
df['agr2'] = np.nan
# Find all the rows where len is 7
df_idx = df['len'] == 7
# Set agr1 and agr2 where len is 7
df.loc[df_idx, 'agr1'] = df.loc[df_idx, 'agr'].str.slice(4)
df.loc[df_idx, 'agr2'] = df.loc[df_idx, 'agr'].str.slice(3,6)
# Set agr1 and agr2 where len isn't 7
df.loc[~df_idx, 'agr1'] = df.loc[~df_idx, 'agr'].str.slice(3,5)
df.loc[`df_idx, 'agr2'] = df.loc[~df_idx, 'agr'].str.slice(1,2)
Как всегда, без каких-либо данных, я понятия не имею, если это то, что вы хотели быделать или если это неправильно (или сломано).