如何将行值转换为新的列与布尔值在熊猫?——python



我现在拥有的表:

<表类> 名称 年 tbody><<tr>2016B2017C2018D2019

这行得通:

import pandas as pd
import numpy as np
data = [
{'Name': 'A', 'Year': 2016},
{'Name': 'B', 'Year': 2017},
{'Name': 'C', 'Year': 2018},
{'Name': 'D', 'Year': 2019},
]
df = pd.DataFrame(data)
out = (pd.DataFrame(np.identity(df.shape[0]), 
index=df['Name'], 
columns=df['Year'])
.replace({1:"Yes",0:"No"})
)

这是一个选项- @user20843299的解决方案更有效-呼叫次数更少:

(df
.assign(num=1)
.pivot(index='Name', columns='Year', values='num')
.replace({1:"Yes", np.nan:"No"})
.rename_axis(columns=None)
.reset_index()
) 
Name 2016 2017 2018 2019
0    A  Yes   No   No   No
1    B   No  Yes   No   No
2    C   No   No  Yes   No
3    D   No   No   No  Yes

最新更新