Python學習筆記:zip,explode使用範例

問題如下:

預期程式處理結果:

 import pandas as pd

import numpy as np

df = pd.read_excel('0000_sample.xlsx')
print(len(df))
df
10
Out[1]:
編號 組別 小組成員 得獎人員 得獎備註
0 1 A 許南平 NaN NaN
1 2 B 周孟勳 NaN NaN
2 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 NaN NaN
3 4 D 馮岱寧 NaN NaN
4 5 E 詹雅婷,邱淑惠 NaN NaN
5 6 F 周佳珍 NaN NaN
6 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 NaN NaN
7 8 H 張信元 NaN NaN
8 9 I 王右男 NaN NaN
9 10 J 郭柔東,林家豪,林文貞 NaN NaN
In [2]:
#s1 = df['小組成員'].str.split(',')
#df = df.assign(得獎人員=s1, 得獎備註=s1 ).explode('得獎人員').reset_index(drop=True)
#print(len(df))
#df
s = df['小組成員'].str.split(',')
df = df.assign(得獎人員=s, 得獎備註=s).explode('得獎人員').reset_index(drop=True)
print(len(df))
df
20
Out[2]:
編號 組別 小組成員 得獎人員 得獎備註
0 1 A 許南平 許南平 [許南平]
1 2 B 周孟勳 周孟勳 [周孟勳]
2 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 呂淑娟 [呂淑娟, 黃莉宣, 張凱元, 陳慧雪, 陳哲瑋]
3 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 黃莉宣 [呂淑娟, 黃莉宣, 張凱元, 陳慧雪, 陳哲瑋]
4 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 張凱元 [呂淑娟, 黃莉宣, 張凱元, 陳慧雪, 陳哲瑋]
5 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 陳慧雪 [呂淑娟, 黃莉宣, 張凱元, 陳慧雪, 陳哲瑋]
6 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 陳哲瑋 [呂淑娟, 黃莉宣, 張凱元, 陳慧雪, 陳哲瑋]
7 4 D 馮岱寧 馮岱寧 [馮岱寧]
8 5 E 詹雅婷,邱淑惠 詹雅婷 [詹雅婷, 邱淑惠]
9 5 E 詹雅婷,邱淑惠 邱淑惠 [詹雅婷, 邱淑惠]
10 6 F 周佳珍 周佳珍 [周佳珍]
11 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 張欣怡 [張欣怡, 黃俊偉, 張伶仲, 溫駿行]
12 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 黃俊偉 [張欣怡, 黃俊偉, 張伶仲, 溫駿行]
13 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 張伶仲 [張欣怡, 黃俊偉, 張伶仲, 溫駿行]
14 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 溫駿行 [張欣怡, 黃俊偉, 張伶仲, 溫駿行]
15 8 H 張信元 張信元 [張信元]
16 9 I 王右男 王右男 [王右男]
17 10 J 郭柔東,林家豪,林文貞 郭柔東 [郭柔東, 林家豪, 林文貞]
18 10 J 郭柔東,林家豪,林文貞 林家豪 [郭柔東, 林家豪, 林文貞]
19 10 J 郭柔東,林家豪,林文貞 林文貞 [郭柔東, 林家豪, 林文貞]
In [3]:
df['得獎備註'] = ["與「" + "、".join(x for x in b if x not in a) + "」合作"
                 if len(b)>1
                 else ""
                 for a, b in zip(df['得獎人員'], df['得獎備註'])]
df
Out[3]:
編號 組別 小組成員 得獎人員 得獎備註
0 1 A 許南平 許南平
1 2 B 周孟勳 周孟勳
2 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 呂淑娟 與「黃莉宣、張凱元、陳慧雪、陳哲瑋」合作
3 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 黃莉宣 與「呂淑娟、張凱元、陳慧雪、陳哲瑋」合作
4 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 張凱元 與「呂淑娟、黃莉宣、陳慧雪、陳哲瑋」合作
5 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 陳慧雪 與「呂淑娟、黃莉宣、張凱元、陳哲瑋」合作
6 3 C 呂淑娟,黃莉宣,張凱元,陳慧雪,陳哲瑋 陳哲瑋 與「呂淑娟、黃莉宣、張凱元、陳慧雪」合作
7 4 D 馮岱寧 馮岱寧
8 5 E 詹雅婷,邱淑惠 詹雅婷 與「邱淑惠」合作
9 5 E 詹雅婷,邱淑惠 邱淑惠 與「詹雅婷」合作
10 6 F 周佳珍 周佳珍
11 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 張欣怡 與「黃俊偉、張伶仲、溫駿行」合作
12 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 黃俊偉 與「張欣怡、張伶仲、溫駿行」合作
13 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 張伶仲 與「張欣怡、黃俊偉、溫駿行」合作
14 7 G 張欣怡,黃俊偉,張伶仲,溫駿行 溫駿行 與「張欣怡、黃俊偉、張伶仲」合作
15 8 H 張信元 張信元
16 9 I 王右男 王右男
17 10 J 郭柔東,林家豪,林文貞 郭柔東 與「林家豪、林文貞」合作
18 10 J 郭柔東,林家豪,林文貞 林家豪 與「郭柔東、林文貞」合作
19 10 J 郭柔東,林家豪,林文貞 林文貞 與「郭柔東、林家豪」合作

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *