Python 熊猫:展平不一致行中的数据

Python 熊猫:展平不一致行中的数据,python,pandas,Python,Pandas,我有一个输入Excel电子表格,如下所示: key | value | other data ------------------------- ... k1 | v1 | d1 | v2 | | v3 | k2 | v2 | d2 | v5 | k3 | v1 | d3 值存储在空的行中(值列除外),该行位于具有匹配键的行的正下方,可以有任意数量的值绑定到该键,但不太可能超过三个。所有键都是唯一的,“其他数据”可

我有一个输入Excel电子表格,如下所示:

key  | value | other data
------------------------- ...
k1   | v1    | d1
     | v2    |
     | v3    |
k2   | v2    | d2
     | v5    |
k3   | v1    | d3
值存储在空的行中(值列除外),该行位于具有匹配键的行的正下方,可以有任意数量的值绑定到该键,但不太可能超过三个。所有键都是唯一的,“其他数据”可能丢失或重复,大约有十几个值和数千个数据行

我需要将输入表转换为以下格式:

k1   | v1,v2,v3 | d1 | ...
k2   | v2,v5    | d2 | ...
k3   | v1       | d3 | ...
我已经用openpyxl和一个简单的迭代算法解决了这个问题,我想知道是否有一种更优雅的方法可以使用Pandas的数据帧操作工具来实现这一点?我搜索了Pandas数据操作教程,但我能找到的大部分内容都使用了
groupby()
agg()
,这似乎不是我的情况,因为我没有可以聚合的列,只能依赖于键的一致唯一性

正面解决方案,我现在使用:

导入openpyxl
wb=openpyxl.load_工作簿('in.xlsx')
ws=wb['Sheet1']
行数据=无
out_list=list()
i=2
当i
考虑到excel,执行此操作的方法如下所示:


df= pd.read_excel(r'C:\path\excelfile.xlsx',sheet_name='Sheet_Name')
df=(df.groupby(df.key.ffill()).agg({'value':lambda x: ','.join(x),'other data':'first'})
                                                                .reset_index())
  key     value other data
0  k1  v1,v2,v3         d1
1  k2     v2,v5         d2
2  k3        v1         d3