У меня есть некоторые данные, которые отслеживают изменения названий компаний с течением времени. Однако вместо того, чтобы каждое имя изменялось в одной строке, я хотел бы объединить их все в одном поле.
Входные данные могут быть построены с использованием:
#Import the modules:
import pandas as pd
import numpy as np
#Create the empty data frame:
df = pd.DataFrame(columns=['dt','old_name','new_name'])
#Populate the data frame:
df.loc[len(df)] = ['01/01/2001', 'AAA', 'BBB']
df.loc[len(df)] = ['02/02/2002', 'BBB', 'CCC']
df.loc[len(df)] = ['03/03/2003', 'CCC', 'DDD']
#View the output:
df
Как я хочу, чтобы вывод выглядел так, можно создать с помощью этого:
#Create the empty data frame:
end_df = pd.DataFrame(columns=['dt','name'])
#Populate:
end_df.loc[len(end_df)] = ['01/01/2001', 'AAA-BBB-CCC-DDD']
end_df.loc[len(end_df)] = ['02/02/2002', 'AAA-BBB-CCC-DDD']
end_df.loc[len(end_df)] = ['03/03/2003', 'AAA-BBB-CCC-DDD']
#View the output:
end_df
Редактировать: Я запускаю этот код в Pyspark2 с использованием фрейма данных Pandas - в случае, если это имеет какое-либо значение для синтаксиса.
Кроме того, в моем наборе данных есть несколько групп имен. Под этим я подразумеваю, что существует больше групп изменений имен, не связанных с первой группой, чьи имена необходимо объединить.
Пример сгруппированного ввода:
#Create the empty data frame:
df = pd.DataFrame(columns=['dt','old_name','new_name'])
#Populate the data frame:
df.loc[len(df)] = ['01/01/2001', 'AAA', 'BBB']
df.loc[len(df)] = ['02/02/2002', 'BBB', 'CCC']
df.loc[len(df)] = ['03/03/2003', 'CCC', 'DDD']
df.loc[len(df)] = ['02/01/2001', 'XXX', 'YYY']
df.loc[len(df)] = ['03/02/2002', 'YYY', 'ZZZ']
Пример сгруппированного вывода:
#Create the empty data frame:
end_df = pd.DataFrame(columns=['dt','name'])
#Populate:
end_df.loc[len(end_df)] = ['01/01/2001', 'AAA-BBB-CCC-DDD']
end_df.loc[len(end_df)] = ['02/02/2002', 'AAA-BBB-CCC-DDD']
end_df.loc[len(end_df)] = ['03/03/2003', 'AAA-BBB-CCC-DDD']
end_df.loc[len(end_df)] = ['02/01/2001', 'XXX-YYY-ZZZ']
end_df.loc[len(end_df)] = ['03/02/2002', 'XXX-YYY-ZZZ']
Дайте мне знать, если вам нужны дальнейшие разъяснения.