Python 根据列的值将列转换为多列
在Python中,我想知道是否有一种方法可以从以下内容转换一列数据帧: 为此: 源DF:Python 根据列的值将列转换为多列,python,pandas,dataframe,Python,Pandas,Dataframe,在Python中,我想知道是否有一种方法可以从以下内容转换一列数据帧: 为此: 源DF: In [204]: df Out[204]: Country 0 Italy 1 Indonesia 2 Canada 3 Italy 我们可以使用: 或: 两个附加选项 pd.Series.str.get\u假人 df.Country.str.get_dummies() Canada Indonesia Italy 0 0
In [204]: df
Out[204]:
Country
0 Italy
1 Indonesia
2 Canada
3 Italy
我们可以使用:
或:
两个附加选项
pd.Series.str.get\u假人
df.Country.str.get_dummies()
Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
df.groupby(level=0).Country.value_counts().unstack(fill_value=0)
Country Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
f, u = pd.factorize(df.Country.values)
pd.DataFrame(
np.bincount(
f + np.arange(f.size) * u.size, minlength=u.size * f.size
).reshape(f.size, u.size),
df.index, u
)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
pd.DataFrame(np.eye(u.size, dtype=int)[f], df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
a = np.zeros((f.size, u.size), dtype=int)
a[np.arange(f.size), f] = 1
pd.DataFrame(a, df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
pd.DataFrame.groupby
带有值\u计数
df.Country.str.get_dummies()
Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
df.groupby(level=0).Country.value_counts().unstack(fill_value=0)
Country Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
f, u = pd.factorize(df.Country.values)
pd.DataFrame(
np.bincount(
f + np.arange(f.size) * u.size, minlength=u.size * f.size
).reshape(f.size, u.size),
df.index, u
)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
pd.DataFrame(np.eye(u.size, dtype=int)[f], df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
a = np.zeros((f.size, u.size), dtype=int)
a[np.arange(f.size), f] = 1
pd.DataFrame(a, df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
pd.factorize
+np.bincount
df.Country.str.get_dummies()
Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
df.groupby(level=0).Country.value_counts().unstack(fill_value=0)
Country Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
f, u = pd.factorize(df.Country.values)
pd.DataFrame(
np.bincount(
f + np.arange(f.size) * u.size, minlength=u.size * f.size
).reshape(f.size, u.size),
df.index, u
)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
pd.DataFrame(np.eye(u.size, dtype=int)[f], df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
a = np.zeros((f.size, u.size), dtype=int)
a[np.arange(f.size), f] = 1
pd.DataFrame(a, df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
pd.factorize
+np.eye
df.Country.str.get_dummies()
Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
df.groupby(level=0).Country.value_counts().unstack(fill_value=0)
Country Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
f, u = pd.factorize(df.Country.values)
pd.DataFrame(
np.bincount(
f + np.arange(f.size) * u.size, minlength=u.size * f.size
).reshape(f.size, u.size),
df.index, u
)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
pd.DataFrame(np.eye(u.size, dtype=int)[f], df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
a = np.zeros((f.size, u.size), dtype=int)
a[np.arange(f.size), f] = 1
pd.DataFrame(a, df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
pd.factorize
+数组片分配
df.Country.str.get_dummies()
Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
df.groupby(level=0).Country.value_counts().unstack(fill_value=0)
Country Canada Indonesia Italy
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 1
f, u = pd.factorize(df.Country.values)
pd.DataFrame(
np.bincount(
f + np.arange(f.size) * u.size, minlength=u.size * f.size
).reshape(f.size, u.size),
df.index, u
)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
pd.DataFrame(np.eye(u.size, dtype=int)[f], df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
f, u = pd.factorize(df.Country.values)
a = np.zeros((f.size, u.size), dtype=int)
a[np.arange(f.size), f] = 1
pd.DataFrame(a, df.index, u)
Italy Indonesia Canada
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0