Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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 在数据框中创建新列时,将缺少的值留空_Python_Pandas - Fatal编程技术网

Python 在数据框中创建新列时,将缺少的值留空

Python 在数据框中创建新列时,将缺少的值留空,python,pandas,Python,Pandas,我有一个带有描述列的数据框,我正试图从该列中的文本中解析出度量值 df['measurements'] = [re.findall('\S+\scm', i) + re.findall('\S+cm', i) for i in df['description'] if i is not None] #... description列中的某些行是空的,因此上面的代码给了我一个ValueError,因为值的长度与索引的长度不匹配。如果行为空,如何附加一个像NaN这样的填充值,以便值的长度与索引的长

我有一个带有描述列的数据框,我正试图从该列中的文本中解析出度量值

df['measurements'] = [re.findall('\S+\scm', i) + re.findall('\S+cm', i) for i in df['description'] if i is not None]
#...
description列中的某些行是空的,因此上面的代码给了我一个ValueError,因为值的长度与索引的长度不匹配。如果行为空,如何附加一个像NaN这样的填充值,以便值的长度与索引的长度匹配,并且可以创建新的度量列

输出将类似于以下内容: 例如

我认为您需要的是能够完美处理
None
s的内容-它在输出中返回
NaN

df['measurements'] = df['description'].str.findall('\S+\scm') + 
                     df['description'].str.findall('\S+cm')
如果需要将
None
s替换为空列表,最简单的方法是使用:

样本:

df = pd.DataFrame({'description':['blabla 32cm x 24cm x 12cm blabla',np.nan,
                                  '18cm x 15cm x 10cm blablabla',np.nan]})
print (df)
                        description
0  blabla 32cm x 24cm x 12cm blabla
1                               NaN
2      18cm x 15cm x 10cm blablabla
3                               NaN

df['measurements'] = df['description'].str.findall('\S+\scm') + \
                     df['description'].str.findall('\S+cm')

print (df)
                        description        measurements
0  blabla 32cm x 24cm x 12cm blabla  [32cm, 24cm, 12cm]
1                               NaN                 NaN
2      18cm x 15cm x 10cm blablabla  [18cm, 15cm, 10cm]
3                               NaN                 NaN


你能添加一些样本数据和期望的输出吗?我用样本数据改变输出。谢谢!完全忘记了在运行搜索之前,您可以先填充na。我只是在使用dropna,但后来意识到删除的行可能仍然有用。是的,我认为更好的方法是使用
fillna
并获取
[]
,而不是
NaN
s,如果以后需要处理数据。因为如果列中有标量(
NaN
s)的列表,则某些函数可能会失败。
des = df['description'].fillna('')
df['measurements'] = des.str.findall('\S+\scm') + des.str.findall('\S+cm')
df = pd.DataFrame({'description':['blabla 32cm x 24cm x 12cm blabla',np.nan,
                                  '18cm x 15cm x 10cm blablabla',np.nan]})
print (df)
                        description
0  blabla 32cm x 24cm x 12cm blabla
1                               NaN
2      18cm x 15cm x 10cm blablabla
3                               NaN

df['measurements'] = df['description'].str.findall('\S+\scm') + \
                     df['description'].str.findall('\S+cm')

print (df)
                        description        measurements
0  blabla 32cm x 24cm x 12cm blabla  [32cm, 24cm, 12cm]
1                               NaN                 NaN
2      18cm x 15cm x 10cm blablabla  [18cm, 15cm, 10cm]
3                               NaN                 NaN
des = df['description'].fillna('')
df['measurements'] = des.str.findall('\S+\scm') + des.str.findall('\S+cm')
print (df)
                        description        measurements
0  blabla 32cm x 24cm x 12cm blabla  [32cm, 24cm, 12cm]
1                               NaN                  []
2      18cm x 15cm x 10cm blablabla  [18cm, 15cm, 10cm]
3                               NaN                  []