首页 > 解决方案 > 用下面单元格中的数据替换熊猫单元格“无”

问题描述

我会保持简短,因为我确信有一个简单的解决方案。

我有两个熊猫系列:

s1 = [['name', 'date', 'issue', 'None', height', 'None', 'age']]
s2 = [['eg.john','european format', 'eg. no power', 'first occurence?', 'eg. 1.2m', 'change?', 'eg. 32 years']]  

s1 中有两个np.Nans我想用下面单元格中的值替换。

例如,s1 中的索引 3 为“无”,我想将其替换为 s2 中索引 3 处的值,即“第一次出现”。

我想得到

s1 = [['name', 'date', 'issue', 'first occurence', 'height', 'change?', 'age']]

我试图用各种 for 和 if 语句来做到这一点无济于事,任何帮助将不胜感激。

标签: pythonpandasseries

解决方案


您有 2 个列表而不是 2 个pd.Series数据类型。给定数据:

s1 = ['name', 'date', 'issue', 'None', 'height', 'None', 'age']
s2 = ['eg.john','european format', 'eg. no power', 'first occurence?', 'eg. 1.2m', 'change?', 'eg. 32 years']

简单的解决方案是使用列表理解:

[e1 if e1!='None' else e2 for e1, e2 in zip(s1, s2)]

结果:

 ['name', 'date', 'issue', 'first occurence?', 'height', 'change?', 'age']

请注意,您的数据中的“无”不是np.nan字符串。但是,如果 data 包含 None 类型,则所有计算都更加简单:

s1 = ['name', 'date', 'issue', None, 'height', None, 'age']
[e1 if e1 else e2 for e1, e2 in zip(s1, s2)]    

推荐阅读