python - 如何在熊猫中创建与多列相结合的数据框列
问题描述
我有一些跟踪公司名称随时间变化的数据。但是,我不想将每个名称都更改为一行,而是希望将它们全部连接到一个字段中。
可以使用以下方法构建输入数据:
#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
编辑:我正在使用 pandas 数据框在 Pyspark2 中运行此代码 - 以防对语法产生任何影响。 此外,我的数据集中有多组名称。我的意思是,有更多的名称更改组与需要连接名称的第一组无关。
样本分组输入:
#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']
如果您需要任何进一步的说明,请告诉我。
解决方案
你需要np.flatten and np.unique
import numpy as np
end_df = pd.DataFrame(columns=['dt','name'])
end_df['dt']=df['dt'].copy()
flat=df[df.columns[1:]].values.flatten()
end_df['name']='-'.join(np.unique(flat))
print(end_df)
dt name
0 01/01/2001 AAA-BBB-CCC-DDD
1 02/02/2002 AAA-BBB-CCC-DDD
2 03/03/2003 AAA-BBB-CCC-DDD
推荐阅读
- kubernetes - Kubernetes 指标“/metrics/resource/v1alpha1”和“/metrics/cadvisor”端点之间的区别
- sqlite - 即使删除之前的项目,SQLite 对象是否保留其 ID?
- python - BeautifulSoup 不会正确删除包含“类似文本”标签的标签
- powershell - 如何使用 powershell 脚本从合流页面下载附件?
- javascript - 增加和缩小输入
- javascript - 将用户请求(标头等)传递给外部 URI
- robotframework - 什么是 testCase 和 testSuite?
- python - 将大约 100 个单选按钮分组
- sql-server - 如何从 sqlcmd 提示符运行单个 sql 命令?
- android - 在循环android中获取LiveData转换