我需要将每个组的第一行的值设置为False。
start_ix = group.head(1).index
print(start_ix)
Int64Index([20],dtype =' int64')
print df.iloc[start_ix]['start']
20错误
名称:start,dtype:bool
df.iloc[start_ix]['start'] = True
但是在检查DataFrame时,值保持False
。
答案 0 :(得分:2)
所以基本上你所尝试的就是所谓的链式索引,可能会也可能不会起作用:
df.iloc[start_ix]['start'] = True
这可能有助于将此视为链接函数调用,这里的问题是有时它会返回一个您想要的视图,但有时它会返回一个副本,导致原始df没有变化。
所以你应该使用ix
,它允许你明确地按整数值(或标签)索引,然后指定你想要设置数据的列标签:
df.ix[start_ix,'start'] = True
docs详细介绍了推荐的方法,通常在设置潜在副本的值时会引发警告,但无法捕获所有实例。
<强>更新强>
由于版本0.20.0
ix
已弃用,而loc
因此上述内容变为
df.loc[start_ix,'start'] = True