我现在拥有的表:
<表类>
名称
年
tbody><<tr>2016 B2017 C2018 D2019 表类>
这行得通:
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