将list变量编码为flag变量

时间:2015-04-08 18:55:48

标签: python pandas dataframe transformation

我已经pandas.DataFrame

uid | list_var
--------------
 1  | ['v1', 'v2']
 2  | ['v1', 'v3']
 3  | ['v2']
 4  | []
 5  | ['v1', 'v1']

想转换它:

uid | v1 | v2 | v3
------------------
 1  | 1  | 1  | 0
 2  | 1  | 0  | 1
 3  | 0  | 1  | 0
 4  | 0  | 0  | 0
 5  | 2  | 0  | 0

在熊猫中做这件事的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

看起来您想要使用.str.count方法。请注意,此处df实际上是Series。如果您先DataFrame使用.squeeze()

In [16]: vs = ['v1', 'v2', 'v3']

In [17]: df
Out[17]:
0    [v1, v2]
1    [v1, v3]
2        [v2]
3          []
4    [v1, v1]
dtype: object

In [18]: pd.concat([df.str.count(v) for v in vs], axis=1, keys=vs)
Out[18]:
   v1  v2  v3
0   1   1   0
1   1   0   1
2   0   1   0
3   0   0   0
4   2   0   0