|
可用Python的pandas库实现这个操作。下面是一个示例代码展示如何将相同的year-match-申请人组合在一起,并将对应的专利信息横向合并。
假设的数据结构
year match 申请人 newzlid 专利类型 发明设计人
2024 M1 A ZL1 类型1 设计人1
2024 M1 A ZL2 类型2 设计人2
2024 M1 B ZL3 类型1 设计人3
2024 M2 A ZL4 类型1 设计人4
import pandas as pd
# 假设已将数据加载到DataFrame
data = pd.DataFrame({
'year': [2024, 2024, 2024, 2024],
'match': ['M1', 'M1', 'M1', 'M2'],
'申请人': ['A', 'A', 'B', 'A'],
'newzlid': ['ZL1', 'ZL2', 'ZL3', 'ZL4'],
'专利类型': ['类型1', '类型2', '类型1', '类型1'],
'发明设计人': ['设计人1', '设计人2', '设计人3', '设计人4']
})
# 按照 year, match, 申请人 进行分组
grouped = data.groupby(['year', 'match', '申请人'])
# 定义一个函数,将 newzlid, 专利类型, 发明设计人 横向合并
def combine_patent_info(group):
combined_info = []
for _, row in group.iterrows():
combined_info.extend([row['newzlid'], row['专利类型'], row['发明设计人']])
return pd.Series(combined_info)
# 对分组后的数据应用合并函数
result = grouped.apply(combine_patent_info).reset_index()
# 清理结果表格:移除多余的列名并重命名
result.columns = ['year', 'match', '申请人'] + [f'专利信息{i+1}' for i in range(result.shape[1] - 3)]
# 打印结果
print(result)
代码将会产生一个结果表格,每行对应一个 year-match-申请人 组合,并将所有相关的专利信息横向合并。如:
year match 申请人 专利信息1 专利信息2 专利信息3 专利信息4 专利信息5 专利信息6
2024 M1 A ZL1 类型1 设计人1 ZL2 类型2 设计人2
2024 M1 B ZL3 类型1 设计人3 NaN NaN NaN
2024 M2 A ZL4 类型1 设计人4 NaN NaN NaN
每行代表一个year-match-申请人的组合。每个专利信息(包括 newzlid, 专利类型, 发明设计人)在同一行横向排列。如果某个year-match-申请人的组合有多于一个专利信息,依次列在同一行中。
|