[英]Group the values using one column and return the one having max value in other column using pandas dataframe
[英]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,您可以split
、 explode
和groupby.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
我們可以嘗試使用dot
的get_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.