求可提取重复Serial Number关联信息并生成合并结果的Python代码
Python实现合并重复Serial Number的Characteristics字段
输入表格
| Serial Number | Age | Characteristics |
|---|---|---|
| 1001 | 20 | Tall |
| 1002 | 23 | Blue |
| 1001 | 20 | Black |
| 1002 | 23 | Short |
| 1003 | 19 | Green |
可以用Python的pandas库实现需求,以下是完整代码,支持多种合并顺序:
import pandas as pd # 构造输入数据(若从本地文件读取,可替换为pd.read_excel("your_file.xlsx")或pd.read_csv("your_file.csv")) input_data = { 'Serial Number': [1001, 1002, 1001, 1002, 1003], 'Age': [20, 23, 20, 23, 19], 'Characteristics': ['Tall', 'Blue', 'Black', 'Short', 'Green'] } df = pd.DataFrame(input_data) # 方式1:按原数据出现顺序合并 merged_df_original = df.groupby(['Serial Number', 'Age'])['Characteristics'].agg(', '.join).reset_index() print("按原顺序合并结果:") print(merged_df_original) # 方式2:反转原顺序合并(匹配你给出的1002的输出:Short, Blue) merged_df_reversed = df.groupby(['Serial Number', 'Age'])['Characteristics'].agg(lambda x: ', '.join(reversed(x))).reset_index() print("\n反转顺序合并结果:") print(merged_df_reversed) # 方式3:按字母排序合并 merged_df_sorted = df.groupby(['Serial Number', 'Age'])['Characteristics'].agg(lambda x: ', '.join(sorted(x))).reset_index() print("\n按字母排序合并结果:") print(merged_df_sorted) # 保存结果到文件(以反转顺序为例) # merged_df_reversed.to_excel("merged_result.xlsx", index=False) # merged_df_reversed.to_csv("merged_result.csv", index=False)
对应输出表格
按原顺序合并
| Serial Number | Age | Characteristics |
|---|---|---|
| 1001 | 20 | Tall, Black |
| 1002 | 23 | Blue, Short |
| 1003 | 19 | Green |
反转顺序合并(匹配期望输出)
| Serial Number | Age | Characteristics |
|---|---|---|
| 1001 | 20 | Black, Tall |
| 1002 | 23 | Short, Blue |
| 1003 | 19 | Green |
按字母排序合并
| Serial Number | Age | Characteristics |
|---|---|---|
| 1001 | 20 | Black, Tall |
| 1002 | 23 | Blue, Short |
| 1003 | 19 | Green |
内容的提问来源于stack exchange,提问作者Prateeksha Dawn
相关产品推荐
相关产品推荐

