如何合并大量系列数据?制作另一个数据框。使用堆栈函数

how to consolidate lots of series data? to make another dataframe. using stack function

我想合并 dataframe,但我不知道如何在这里上传 dataframe,所以我只留在下面 link。
我要合并的数据(电子表格上的原始数据)是系列或数据框的形式。

Part#:由8~13个字符集组成(字母和数字混合)
说明:总是在 Part# 的正下方。
Ref#:很多 Ref# 用逗号分隔。最后一个 Ref# 末尾没有逗号

从我的上一个问题来看,有人建议我使用 iloc 查找 Part#。但是我会有很多行要合并,所以我不能一一指定它们。有没有人给我实现

有了堆叠功能,我想堆叠 Ref# 并且每个不同的 Ref# 都必须根据其在原始数据上的上述值有其 Part# 和描述

如何为此构建 python 代码?

https://docs.google.com/spreadsheets/d/10zSKfXavaXWl1MOo_ScW60rbERUDiQtDi6p-UbrUgro/edit?usp=sharing

import pandas as pd 

# create dataframe
df = pd.DataFrame({
    "a" : [
          'A2C02158300',
          'D REC/BAS16-03W,100V,250mA,SOD323,0s,SMD',
          'D201,D206,D218,D219,D222,D302,D308,D408,',
          'D409,D501,D502,D505,D506,D507,D508',
          'A2C02250500',
          'T BIP/PUMD3,SOT363,SMD SOLDERING',
          'T209,T501,T502',
          'A2C00004540',
          'CY-AIIA 5.6K 1% 1/16W 0603',
          'R107,R124,R125,R126,R209,R214,R255,R329,',
          'R377,R404,R426',
          'A2C00000243',
          'ZENER DIODE(A/S)',
          'Z119',
          'A2C01888600',
          'R LIN,10K,5%,TK200,63mW,0402',
          'R101,R102,R106,R120,R184,R187,R289,R291',
          ',',
          'R317,R347,R400,R432,R449,R450,R464,R514',
          ',',
          'R515,R524,R615,R720,R753,R779,R780,R781',
          ',',
          'R784,R787,R788,R789,R790'
        ]       
})

df.head(100)

输出:

然后我们创建包含“part”和“description”列的新数据框。部件列基于正则表达式,可能应该更改(我不知道部件名称的格式):

df1 = pd.DataFrame({
    'part': df[df['a'].str.match('A\dC\d{8}')]['a'].tolist(),
    'description': df.iloc[df[df['a'].str.match('A\dC\d{8}')].index + 1]['a'].tolist()
})
df1.head()

输出:

然后我们创建一个用于合并参考行的临时数据框:

df2 = pd.merge(df, df1, left_on='a', right_on='part', how='left')
df2.drop(df2[df2['a'].isin(df2['description'])].index, inplace=True)
df2.loc[df2['a'] == df2['part'], 'a'] = ''
df2['part'].fillna(method='ffill', inplace=True)
df2.head()

输出:

然后我们合并参考行:

df1 = df1.merge(df2.groupby(['part'])['a'].agg([('a', ''.join)]), on='part').rename(columns={'a': 'ref'})
df1.head()

输出:

最后我们分解参考列:

df1 = df1.set_index(['part', 'description']).apply(lambda x: x.str.split(',').explode()).reset_index()  
df1   

输出: