繁体   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