我想将某个领域的一些勇士换成另一个。例如: 假设我有一个 pandas.DataFrame 对象,其标识符为 df (是的,非常原始),它具有多个列,但是其中一些是相关的,不能为空。
我注意到一些值设置在另一个字段中。假设 field1 是相关字段,而 field2 不是相关字段。我有一千个寄存器,当我获得新数据时,它每周都在增加,由于我喜欢使事情自动化,因此我首先检查以下可能的值:
idx = df[df.field1.isna() & df.field2.notna()].index
然后我尝试替换它们:
df.loc[idx, ['field1']] = df.loc[idx, ['field2']]
但是当我看到结果时,什么都没有改变……为什么?我以这种方式用单个值代替,但是如果它们不同,我将无法再使用。
df.loc[idx, ['field1']] = "Not empty any longer" # This will work
我不知道如何以一种……好的方式实现这一目标?我的意思是,我不想手动检查它,如果它们只有50岁也没关系,我必须在其他领域也做同样的事情,我可能会得到更多类似的东西(我会)。
谢谢!
答案 0 :(得分:0)
尝试以下操作:<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://fonts.googleapis.com/css?family=Montserrat">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<style>
.PinDiv{
display: none;
}
</style>
</head>
<body>
<div>
<div>
<section>
<figure>
<i class="HoverPin" onmouseover="$('#PinDiv1').css('display','block');" onmouseout="$('.PinDiv:not(#PinDiv1)').css('display','none');">1</i>
<i class="HoverPin" onmouseover="$('#PinDiv2').css('display','block');" onmouseout="$('.PinDiv:not(#PinDiv2)').css('display','none');">2</i>
<i class="HoverPin" onmouseover="$('#PinDiv3').css('display','block');" onmouseout="$('.PinDiv:not(#PinDiv3)').css('display','none');">3</i>
<i class="HoverPin" onmouseover="$('#PinDiv4').css('display','block');" onmouseout="$('.PinDiv:not(#PinDiv4)').css('display','none');">4</i>
</figure>
</section>
</div>
<div id="PinDiv1" class="PinDiv">
<h3>Text item 1</h3>
</div>
<div id="PinDiv2" class="PinDiv">
<h3>Text item 2</h3>
</div>
<div id="PinDiv3" class="PinDiv">
<h3>Text item 3</h3>
</div>
<div id="PinDiv4" class="PinDiv">
<h3>Text item 4</h3>
</div>
</div>
</body>
</html>
示例:
df.loc[idx, ['field1']] = df.loc[idx, ['field2']].values
原始数据框:
# The None in 'field1' should be replaced by the 'field2' value
df = pd.DataFrame({'field1':[1,2,3,None,5], 'field2':[6,7,8,8,None]})
idx = df[df.field1.isna() & df.field2.notna()].index
df.loc[idx, ['field1']] = df.loc[idx, ['field2']].values
修改后的df:
df
field1 field2
0 1.0 6.0
1 2.0 7.0
2 3.0 8.0
3 NaN 8.0
4 5.0 NaN