kop*_*man 5 python list dataframe pandas
我需要您的帮助来完成以下任务:我有以下数据框:
test = {'Col1':[2,5],
'Col2':[5,7],
'Col_List':[['One','Two','Three','Four','Five'], ['Two', 'Four']],
'One':[0,0],
'Two':[0,0],
'Three':[0,0],
'Four':[0,0],
'Five':[0,0],}
df=pd.DataFrame.from_dict(test)
df
Run Code Online (Sandbox Code Playgroud)
看起来像:
| 第 1 列 | 第2栏 | 列列表 | 一 | 二 | 三 | 四 | 五 |
|---|---|---|---|---|---|---|---|
| 2 | 5 | [一二三四五] | 0 | 0 | 0 | 0 | 0 |
| 5 | 7 | [二、四] | 0 | 0 | 0 | 0 | 0 |
我需要检查列表Col_List并根据列表中的项目设置Col1特定列中的列值(One、Two、Three或Four)Five。
现在我想要得到以下结果:
| 第 1 列 | 第2栏 | 列列表 | 一 | 二 | 三 | 四 | 五 |
|---|---|---|---|---|---|---|---|
| 2 | 5 | [一二三四五] | 2 | 2 | 2 | 2 | 2 |
| 5 | 7 | [二、四] | 0 | 5 | 0 | 5 | 0 |
exploded = df.explode("Col_List")
df.update(pd.get_dummies(exploded["Col_List"])
.mul(exploded["Col1"], axis="rows")
.groupby(level=0).sum())
Run Code Online (Sandbox Code Playgroud)
要得到
>>> df
Col1 Col2 Col_List One Two Three Four Five
0 2 5 [One, Two, Three, Four, Five] 2 2 2 2 2
1 5 7 [Two, Four] 0 5 0 5 0
Run Code Online (Sandbox Code Playgroud)