Python 根据列的值将列转换为多列

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

在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          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