我要确保与val2
对应的第一个值vintage
是NaN
。目前已经有两个了NaN
,但是我想确保0.53
也更改为NaN
。
df = pd.DataFrame({
'vintage': ['2017-01-01', '2017-01-01', '2017-01-01', '2017-02-01', '2017-02-01', '2017-03-01'],
'date': ['2017-01-01', '2017-02-01', '2017-03-01', '2017-02-01', '2017-03-01', '2017-03-01'],
'val1': [0.59, 0.68, 0.8, 0.54, 0.61, 0.6],
'val2': [np.nan, 0.66, 0.81, 0.53, 0.62, np.nan]
})
到目前为止,这是我尝试过的方法:
df.groupby('vintage').first().val2 #This gives the first non-NaN values, as shown below
vintage
2017-01-01 0.66
2017-02-01 0.53
2017-03-01 NaN
df.groupby('vintage').first().val2 = np.nan #This doesn't change anything
df.val2
0 NaN
1 0.66
2 0.81
3 0.53
4 0.62
5 NaN
您不能将结果赋值给聚合,也将first
忽略现存的NaN
,您可以做的是调用head(1)
,它将返回每个组的第一行,并将索引传递loc
给orig
df以覆盖这些列值:
In[91]
df.loc[df.groupby('vintage')['val2'].head(1).index, 'val2'] = np.NaN
df:
Out[91]:
date val1 val2 vintage
0 2017-01-01 0.59 NaN 2017-01-01
1 2017-02-01 0.68 0.66 2017-01-01
2 2017-03-01 0.80 0.81 2017-01-01
3 2017-02-01 0.54 NaN 2017-02-01
4 2017-03-01 0.61 0.62 2017-02-01
5 2017-03-01 0.60 NaN 2017-03-01
在这里,您可以看到head(1)
返回每个组的第一行:
In[94]:
df.groupby('vintage')['val2'].head(1)
Out[94]:
0 NaN
3 0.53
5 NaN
Name: val2, dtype: float64
与此相反的first
结果将返回第一个非NaN,除非NaN
该组只有值:
In[95]:
df.groupby('vintage')['val2'].first()
Out[95]:
vintage
2017-01-01 0.66
2017-02-01 0.53
2017-03-01 NaN
Name: val2, dtype: float64
问题内容: 我正在尝试使用jQuery,CSS或PHP来增加字符串中每个单词的第一个字母的字体大小。例如,我将在h1标签中有一个标题,如下所示: 我想通过文本将所有文本都转换为大写(CSS没问题),然后增加出现在字符串中的第一个字母的字体大小。使用CSS或jQuery,是否可以选择每个单词的首字母并进行修改? 问题答案: $(document).ready(function() { var wor
我有3个组合框,当我选择第一个组合框时,我希望第二个组合框的第一项和第三个组合框被自动选择。当选择第二个组合框的第一项时,将触发第三个组合框的on选择事件,但参数未定义 当我选择第一个组合框的项目时,这里的是未定义的。当我选择第二个组合框的项目时,它不是 为什么?
问题内容: 我有一个像这样的元组列表(总是成对出现): 我想找到每对中第一项的总和,即: 如何在Python中执行此操作?目前,我正在遍历列表: 我觉得必须有一种更Python化的方式。 问题答案: 与Python 2.3兼容的版本是 或在最新版本的Python中,请参见此答案。 也会做。
返回数组中的每个第 n 个元素。 使用 Array.filter() 创建一个包含给定数组的每个第 n 个元素的新数组。 const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); everyNth([1, 2, 3, 4, 5, 6], 2); // [ 2, 4, 6 ]
问题内容: 我有两个数组,我想检查是否每个元素都在中。如果元素的值在中重复,则该元素的值必须相等。最好的方法是什么? 问题答案: 一种选择是对两个数组进行排序,然后遍历两个数组,然后比较元素。如果在超级袋中未找到子袋候选中的元素,则前者不是子袋。排序通常为O(n *log(n)),比较为O(max(s,t)),其中 s 和_t_是数组大小,总时间复杂度为O(m * log(m)) ,其中m =ma
问题内容: 我有这样的结构: 我想使用内置方法(在一行中)对整数()求和。 有任何想法吗? 问题答案: 会工作。
假设我有两个数组,和,其中是的子集: 我想返回如下数组: 如果只是一个数字,那就足够简单了(),但我尝试了y中的等效
本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因