簡體   English   中英

使用python反轉Excel工作表中的2列,其中一列具有單個變量,另一列具有列表

[英]Reversing 2 columns in an excel sheet with one column having a single variable and the other column having a list using python

我在 Excel 工作表中有 2 列,下面有列和值

資產 ID FADEL ID
fcb03 12500,12502
f813a 4062
d79ca 16145
fa632 6698
9c7cd 4062、6698
4d787 18933
5569a 4062,6698
2cd98 16145
5d58d 9965
52b30 12500,12502

我想要一個具有以下輸出的 excel 表

資產 ID FADEL ID
fcb03,52b30 12500
fcb03,52b30 12502
f813a,9c7cd,5569a 4062
d79ca,2cd98 16145
fa632,9c7cd,5569a 6698
4d787 18933
5天5天 9965

我想通過python代碼得到答案。 我嘗試通過 pandas 數據框實現這一點,我對此感到震驚。

假設df是輸入 DataFrame,您可以splitexplodegroupby.agg

out = (df
 .assign(**{'FADEL Ids': df['FADEL Ids'].str.split(',')})
 .explode('FADEL Ids')
 .groupby('FADEL Ids', as_index=False)
 ['Asset Ids'].agg(','.join)
)

print(out)

輸出:

  FADEL Ids          Asset Ids
0      6698              9c7cd
1     12500        fcb03,52b30
2     12502        fcb03,52b30
3     16145        d79ca,2cd98
4     18933              4d787
5      4062  f813a,9c7cd,5569a
6      6698        fa632,5569a
7      9965              5d58d

我們可以嘗試使用dotget_dummies

s = df.set_index('Asset Ids')['FADEL Ids'].str.get_dummies(',')
out = s.T.dot(s.index+',').str[:-1].reset_index()
out
Out[130]: 
   index                  0
0  12500        fcb03,52b30
1  12502        fcb03,52b30
2  16145        d79ca,2cd98
3  18933              4d787
4   4062  f813a,9c7cd,5569a
5   6698  fa632,9c7cd,5569a
6   9965              5d58d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM