Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在数据帧系列中使用逗号分隔的值_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 在数据帧系列中使用逗号分隔的值

Python 3.x 在数据帧系列中使用逗号分隔的值,python-3.x,pandas,Python 3.x,Pandas,我有熊猫数据框系列中的数据,这是一个逗号分隔值字符串,例如 workid:1234, homeid:4567, schoolid: 6789 字符串可以包含空值或多个值,id号的长度可以是可变的: id_numbers 0 1 workid:1234 2 workid:2567, homeid:345, schoolid: 678 3 homeid:567, schoolid: 6789 我希望创建一个新的系列“workid”,它只包含workid:xxxx值 work_id_n

我有熊猫数据框系列中的数据,这是一个逗号分隔值字符串,例如

workid:1234, homeid:4567, schoolid: 6789
字符串可以包含空值或多个值,id号的长度可以是可变的:

id_numbers
0
1   workid:1234
2   workid:2567, homeid:345, schoolid: 678
3   homeid:567, schoolid: 6789
我希望创建一个新的系列“workid”,它只包含
workid:xxxx

work_id_numbers
0   
1   workid:1234
2   workid:2567
3   
我试过了

df['id_list'] = df['id_numbers'].str.split(",")
它创建列表

id_list
0   
1   [workid:1234]
2   [workid:2567, homeid:345, schoolid: 678]
3   [homeid:567, schoolid: 6789]
我试图遍历列表以提取
workid:xxx

for num in df['id_list']:
    if num.str.contains("workid", na=False) == True:
        df['work_id_number'] = num
但是我有一个错误:

AttributeError: 'float' object has no attribute 'str'
我觉得有很多方法可以解决这个问题,所以我愿意修改我的方法或选择其他方法。

使用


具有列表理解功能的解决方案:

df['id_list'] = [','.join(y for y in x.split(", ") if y.startswith('workid')) 
                            for x in df['id_numbers'].fillna('')]
print (df)
                               id_numbers      id_list
0                                     NaN             
1                             workid:1234  workid:1234
2  workid:2567, homeid:345, schoolid: 678  workid:2567
3              homeid:567, schoolid: 6789   

try:str(num)。contains出现错误:
AttributeError:type对象“str”没有属性“num”
这有效。在接受作为首选解决方案之前,我将等待其他解决方案。@Dave先生,当然可以。很乐意帮忙。:)这也行得通。我需要研究列表理解,以了解发生了什么。@Dave先生-两种解决方案都很好,不同之处在于我的解决方案在一行中匹配多个
workid
。)这两种解决方案都有效-谢谢大家-但我想我会选择这一个,因为它让我列出了我认为对熊猫特别有用的理解。
df['id_list'] = [','.join(y for y in x.split(", ") if y.startswith('workid')) 
                            for x in df['id_numbers'].fillna('')]
print (df)
                               id_numbers      id_list
0                                     NaN             
1                             workid:1234  workid:1234
2  workid:2567, homeid:345, schoolid: 678  workid:2567
3              homeid:567, schoolid: 6789