如果行值是串联的,python pandas数据框将创建带有标签(0或1)的新列

菲利普·C

我是python和pandas的新手,我有一个小问题。我试图在论坛和Google上找到一种解决方案,但找不到。所以我们开始:

我有一个包含唯一名称的系列:

in [8]: Name_Series.head()
Out[8]: 
0     US2005642
1     US2007961
2       US13721
3     US2013770
4       US14822
dtype: object

在我的数据框中,有一列,每行包含一个名称。

In [5]: df.Name.head()
Out[5]: 
0    JP2015121
1      US14822
2      US14358
3    JP2015539
4    JP2015156
Name: AppNo, dtype: object

我需要的是新列'Label',如果Name_Series中包含Name,则包含1;如果不包含Name,则包含0。

我的想法是编写一个返回1或0的函数并将其应用于数据框:

def Label(Name_Series, Name):
if Name_Series.str.contains(Name).sum()>0:
    return 1            
else:
    return 0
df['Prio'] = list(map(Label_Prio, PrioList, df.AppNo))

不幸的是,这导致以下错误:

IN [9]: df['Label'] = list(map(Label, Name_Series, df.Name))
Traceback (most recent call last):

  File "<ipython-input-9-713d2d55d303>", line 1, in <module>
    df['Label'] = list(map(Label, Name_Series, df.Name))

  File "Test.py", line 60, in Label
    if Name_Series.str.contains(Name).sum()>0:

AttributeError: 'unicode' object has no attribute 'str'

因此,当我使用地图功能时,它仅从系列中获取一个值,而不是整个系列。我能以某种方式告诉map函数将整个系列作为参数,而不是系列中的一个值吗?

如果有人想出另一种解决方案可以达到相同的结果,我将不胜感激。我的第一个尝试是编写一个循环遍历每行并返回1或0的循环,但这非常慢。数据框将在其中应用200k +行,要搜索的系列将包含约20k个名称。

亚力山大

您可以简单地使用isin将布尔结果乘以1会将其转换为零和一:您也可以使用.astype(int)

df['Label'] = df.Name.isin(Name_Series) * 1

>>> df
        Name  Label
0  JP2015121      0
1    US14822      1
2    US14358      0
3  JP2015539      0
4  JP2015156      0

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Pandas:为每个索引值串联多个行值

来自分类Dev

Python-生成的串联值不应生成新行

来自分类Dev

使用串联值分割数据框行

来自分类Dev

如何为其他两列的每个组合创建一个带有新列的新数据框行?

来自分类Dev

将Pandas groupby转换为具有带有布尔值列的数据框

来自分类Dev

如果范围列的值为0,则删除Pandas数据框的行

来自分类Dev

将Pandas Python数据框中的某些列重新缩放为(0,1)

来自分类Dev

根据其他列中的值在python 3(pandas)数据框中创建新列

来自分类Dev

通过查找其他行中的值来创建新的pandas数据框列

来自分类Dev

遍历 pandas 数据框中的行并匹配列表字典中的值以创建新列

来自分类Dev

Python Pandas:如果字符串值列表== [无],则从数据框中删除行

来自分类Dev

如果列行中的值为零,则删除pandas数据框中所有列中的所有行

来自分类Dev

Python Pandas将数据框1中的一行中的多次出现转换为数据框2中的新列

来自分类Dev

Python Pandas:如何将“数据框列”值设置为X轴标签

来自分类Dev

如果某一列与值匹配,则从数据框中删除行-Python 3.6

来自分类Dev

Python数据框:如果行值为-ve,则将两列相减?

来自分类Dev

Python Pandas:根据另一个数据框的类别值创建新列

来自分类Dev

Python Pandas过滤并创建新的数据框

来自分类Dev

将新数据框插入现有数据框到Pandas中的特定行位置

来自分类Dev

通过选择带有数字/数字的行来创建新的数据框

来自分类Dev

Python 数据框:创建有条件地连接来自 1 或 3 个其他列的字符串值的新列

来自分类Dev

如果列值(字符串)包含python集合中的任何值,如何过滤数据框行?

来自分类Dev

如果列值(字符串)包含python集合中的任何值,如何过滤数据框行?

来自分类Dev

Python Pandas,将groupby()组标签设置为新数据框中的索引

来自分类Dev

如果现有变量位于数据框中的两个值之间,则创建等于1的新变量

来自分类Dev

我可以从具有0行0列的数据框中创建R中具有1行11列的小标题吗?

来自分类Dev

Pandas 行值到列,然后是 1 或 0,如果这是行中的值或不是

来自分类Dev

Python提取(带有pandas数据框)

来自分类Dev

根据其他列行中的过滤值,在pandas数据框中创建一个新列

Related 相关文章

  1. 1

    Python Pandas:为每个索引值串联多个行值

  2. 2

    Python-生成的串联值不应生成新行

  3. 3

    使用串联值分割数据框行

  4. 4

    如何为其他两列的每个组合创建一个带有新列的新数据框行?

  5. 5

    将Pandas groupby转换为具有带有布尔值列的数据框

  6. 6

    如果范围列的值为0,则删除Pandas数据框的行

  7. 7

    将Pandas Python数据框中的某些列重新缩放为(0,1)

  8. 8

    根据其他列中的值在python 3(pandas)数据框中创建新列

  9. 9

    通过查找其他行中的值来创建新的pandas数据框列

  10. 10

    遍历 pandas 数据框中的行并匹配列表字典中的值以创建新列

  11. 11

    Python Pandas:如果字符串值列表== [无],则从数据框中删除行

  12. 12

    如果列行中的值为零,则删除pandas数据框中所有列中的所有行

  13. 13

    Python Pandas将数据框1中的一行中的多次出现转换为数据框2中的新列

  14. 14

    Python Pandas:如何将“数据框列”值设置为X轴标签

  15. 15

    如果某一列与值匹配,则从数据框中删除行-Python 3.6

  16. 16

    Python数据框:如果行值为-ve,则将两列相减?

  17. 17

    Python Pandas:根据另一个数据框的类别值创建新列

  18. 18

    Python Pandas过滤并创建新的数据框

  19. 19

    将新数据框插入现有数据框到Pandas中的特定行位置

  20. 20

    通过选择带有数字/数字的行来创建新的数据框

  21. 21

    Python 数据框:创建有条件地连接来自 1 或 3 个其他列的字符串值的新列

  22. 22

    如果列值(字符串)包含python集合中的任何值,如何过滤数据框行?

  23. 23

    如果列值(字符串)包含python集合中的任何值,如何过滤数据框行?

  24. 24

    Python Pandas,将groupby()组标签设置为新数据框中的索引

  25. 25

    如果现有变量位于数据框中的两个值之间,则创建等于1的新变量

  26. 26

    我可以从具有0行0列的数据框中创建R中具有1行11列的小标题吗?

  27. 27

    Pandas 行值到列,然后是 1 或 0,如果这是行中的值或不是

  28. 28

    Python提取(带有pandas数据框)

  29. 29

    根据其他列行中的过滤值,在pandas数据框中创建一个新列

热门标签

归档