python - 在数据框中创建新列时将缺失值留空

标签 python pandas

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

df['measurements'] = [re.findall('\S+\scm', i) + re.findall('\S+cm', i) for i in df['description'] if i is not None]
#...

描述列中的某些行是空的,因此上面的代码给出了一个 ValueError,因为值的长度与索引的长度不匹配。如果行为空,如何附加像 NaN 这样的填充值,以便值的长度与索引的长度匹配,并且可以创建新的测量列?

输出看起来类似于: 例如。

description                       measurements 
blabla 32cm x 24cm x 12cm blabla  ['32cm', '24cm', '12cm']
NaN                               NaN
18cm x 15cm x 10cm blablabla      ['18cm', '15cm', '10cm']
NaN                               NaN

最佳答案

我认为你需要str.findall什么与 None 完美配合 - 它在输出中返回 NaN:

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

如果需要将 None 替换为空列表,最简单的方法是使用 fillna :

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                  []

关于python - 在数据框中创建新列时将缺失值留空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45159475/

相关文章:

python - 使用 globals() 创建类实例

python - 如何使用 QFileDialog.getOpenFileName 中的选项?

python - 基于不同的 DataFrame 在 pandas DataFrame 中追加列

python - Pandas 爆炸 - 无法从重复的轴重新索引

python - 函数的输入对象将被return覆盖

python - 如何查找pandas中特定范围内的值的数量?

python - 如何将 pygame 应用程序转换为 iOS 应用程序

python - 为什么 (nan,)==(nan,) 为 True,而 nan==nan 为 False?

python - 与服务器上运行的python程序通信

python - 如何更快地将 pandas.DataFrame.cumsum() 函数与过滤器一起使用?