[英]Python replace empty strings in a list with values from a different list
[英]replace df index values with values from a list but ignore empty strings
我想用DF2 [some_column] .values替换DF1.index.values,但是我只想替换DF2 [some_column] .value不为null或空字符串。
DF1.index.values
Index(['a','b','c','d']), dtype='object')
DF2[some_column].values
['base','','','net 1']
预期产量
Index(['base','b','c','net 1']), dtype='object')
我的尝试:
DF1.index = DF2[some_column].values
这是不正确的,因为它替换了所有内容,那不是我想要的,我只对非null或空值感兴趣。
您可以where
根据条件从到来源中选择值:
DF1.index = DF2[some_column].where(DF2[some_column]!="", DF2.index)
因此,如果DF2[some_column]!=""
,它将使用DF2[some_column]
值(实际上,我们在这里创建了一个用作布尔索引的Series,表示要为每个原始数据选择什么数据),在其他情况下,它将使用DF2.index
值。
由于您也不想使用nan
值,因此需要pd.notnull
函数。 并检查这两个条件中使用“逻辑和”功能在两个系列是对数值&
。
所以最终的代码是
DF1.index = DF2[some_column].where(
(DF2[some_column]!="") & pd.notnull(DF2[some_column]), DF2.index)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.