Учитывая Pandas Series
со строками, я хотел бы создать DataFrame
со столбцами для каждой секции Series
на основе позиции.
Например, учитывая этот вход:
s = pd.Series(['abcdef', '123456'])
ind = [2, 3, 1]
В идеале я бы получил это:
target_df = pd.DataFrame({
'col1': ['ab', '12'],
'col2': ['cde', '345'],
'col3': ['f', '6']
})
Один способ создать их один за другим, например:
df['col1'] = s.str[:3]
df['col2'] = s.str[3:5]
df['col3'] = s.str[5]
Но ядогадываясь, что это медленнее, чем один сплит.
Я попытался регулярное выражение, но не уверен, как проанализировать результат:
pd.DataFrame(s.str.split("(^(\w{2})(\w{3})(\w{1}))"))
# 0
# 0 [, abcdef, ab, cde, f, ]
# 1 [, 123456, 12, 345, 6, ]