Шаг 1:
Сначала вам нужно извлечь столбец 'D'
, который был разделен и помещен в конце непустых значений для каждой строки. Кроме того, каждое из значений из 'D'
должно быть удалено из их текущих позиций. Вы можете сделать это с помощью следующего цикла:
import pandas as pd
D_col = []
for i,row in df.iterrows():
# get the index of the last non-empty/null value in the row
d_idx = next(j for j,x in reversed(list(enumerate(row))) if x)
# put the value at that index in D_col
D_col.append(row[d_idx])
# replace that value with ''
row.iloc[d_idx] = ''
Это удалит значения some_date
из вашего DataFrame и поместит их в список D_col
.
Шаг 2:
Теперь вы можете использовать str.replace
для удаления косой черты и str.cat
для объединения столбцов. Вот пример:
from functools import reduce
columns_to_join = ['C', 'D', 'e1', 'e2', 'e3']
# first remove the slashes
cleaned_columns = [df[col].fillna('').str.replace('\\', '') for col in columns_to_join]
# create an empty Series to start reduce with
empty_series = pd.Series(['' for _ in range(len(df))])
# iterate over the cleaned columns and join them (using str.cat) into one column
C_col = reduce(lambda acc, col: acc.str.cat(col.fillna('')), cleaned_columns, empty_series)
Шаг 3:
Объедините все это в один, последний DataFrame. Вот как это сделать:
new_df = pd.DataFrame(df[['A', 'B']])
new_df['C'] = C_col
new_df['D'] = D_col