Python:使用基于嵌套列表中唯一值的列创建熊猫数据框

流努文

我有一个嵌套列表,其中包含每个样本的各个区域。我想制作一个数据框,使每一行(样本)具有或不存在相应区域(列)。例如,数据可能如下所示:

region_list = [['North America'], ['North America', 'South America'], ['Asia'], ['North America', 'Asia', 'Australia']]

最终数据帧将如下所示:

North America    South America     Asia     Australia
1                0                 0        0
1                1                 0        0
0                0                 1        0
1                0                 1        1

我想我可能会想出一种使用嵌套循环和追加的方法,但是还有更多的pythonic方式可以做到这一点吗?也许与numpy.where

海盗

pandas
str.get_dummies

pd.Series(region_list).str.join('|').str.get_dummies()

   Asia  Australia  North America  South America
0     0          0              1              0
1     0          0              1              1
2     1          0              0              0
3     1          1              1              0

numpy
np.bincountpd.factorize

n = len(region_list)
i = np.arange(n).repeat([len(x) for x in region_list])
f, u = pd.factorize(np.concatenate(region_list))
m = u.size

pd.DataFrame(
    np.bincount(i * m + f, minlength=n * m).reshape(n, m),
    columns=u
)

   North America  South America  Asia  Australia
0              1              0     0          0
1              1              1     0          0
2              0              0     1          0
3              1              0     1          1

定时

%timeit pd.Series(region_list).str.join('|').str.get_dummies()
1000 loops, best of 3: 1.42 ms per loop

%%timeit
n = len(region_list)
i = np.arange(n).repeat([len(x) for x in region_list])
f, u = pd.factorize(np.concatenate(region_list))
m = u.size

pd.DataFrame(
    np.bincount(i * m + f, minlength=n * m).reshape(n, m),
    columns=u
)
1000 loops, best of 3: 204 µs per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

大熊猫数据框的两列的唯一值

Python熊猫子集第x列的值基于y列中的唯一值

熊猫数据框计数唯一列表

从长度不等的嵌套列表中创建熊猫数据框

熊猫数据框基于元组列表创建新列

从熊猫数据框中的唯一行值创建新列

熊猫数据框基于嵌套的if条件设置列值

熊猫数据框以字典中的唯一值作为键并以嵌套列表作为值来进行字典

为数据框python列中的每个唯一值创建Excel工作表

使用唯一值基于另一个数据框创建一个数据框

如何使用数据框列中的唯一值创建列表列表?

在熊猫中为每个唯一值创建一个数据框

从熊猫数据框中基于另一列的列的每个列表中删除元素

从Python中的数据框的单个列获取唯一值

如何使用嵌套字典列表中的嵌套列制作熊猫数据框

创建数据框,其中列是其他数据框中的唯一值

如何基于python数据框中的两列组合创建唯一的代码

根据列中的唯一值创建较小的数据框

基于数据框的另一列收集一列的值,并使用它们创建命名列表的列表

在R中的多个数据框中的一列中创建唯一值列表

熊猫python:创建函数以基于定义的列列表合并两个数据框

使用python中该列唯一值的动态列表按列拆分数据框

在 excel 中是否可以从列中创建唯一值列表并使用它从另一列复制数据?

基于熊猫数据框中的两列值创建一个新的数据框

从另一列创建一列列表,并在 Pandas 数据框中仅显示唯一值

基于数据框中唯一值的插值

为另一列中的唯一值的熊猫数据框值赋值

使用列表中的值以基于现有数据框创建几个新数据框

使用从单列中的唯一值派生的新列创建数据框