Python 如何在数据框中设置行值?

Python 如何在数据框中设置行值?,python,pandas,Python,Pandas,我需要将每个组的列的第一行值设置为False start_ix=group.head(1).index 打印(开始_ix) int64索引([20],dtype='int64') 打印df.iloc[start_ix][start'] 20错误 名称:开始,数据类型:bool df.iloc[start_ix][start']=True 但在检查数据帧时,该值保持为False。因此,基本上您尝试的是所谓的链式索引,可能有效,也可能无效: df.iloc[start_ix]['start'] =

我需要将每个组的列的第一行值设置为False

start_ix=group.head(1).index

打印(开始_ix)

int64索引([20],dtype='int64')

打印df.iloc[start_ix][start']

20错误

名称:开始,数据类型:bool

df.iloc[start_ix][start']=True


但在检查数据帧时,该值保持为
False

因此,基本上您尝试的是所谓的链式索引,可能有效,也可能无效:

df.iloc[start_ix]['start'] = True
这可能有助于将其视为链接函数调用,这里的问题是,有时它返回一个您想要的视图,但有时它返回一个副本,导致原始df没有任何更改

因此,您应该使用
ix
,它允许您通过整数值(或标签)明确索引,然后指定要设置数据的列标签:

df.ix[start_ix,'start'] = True
详细信息包括建议的方法,通常在设置潜在副本的值时会发出警告,但它无法捕获所有实例

更新

由于版本
ix
被弃用,取而代之的是
loc
,因此上述内容变得

df.loc[start_ix,'start'] = True

尝试
df.ix[start_ix,'start']=True
@EdChum谢谢,这很有效;你能给我一个带解释的答案吗?我还不明白。可能是重复的。我认为当我尝试更改组上的值而不是数据帧时,发生了错误。现在我知道它也适用于我访问数据帧的方式,感谢
从0.20.0开始,.ix索引器被弃用,取而代之的是更严格的.iloc和.loc索引器。
@ShiheZhang肯定会更新,注意我在3年前回答了这个问题,另外,我已经回答了相当多的
pandas
问题,因此会有很多答案可以采用不同的方式,或者在最近的版本中不受支持。不要把它放在心上,只要提一下,以防其他人稍后搜索此答案。@ShiheZhang我没有问题,我总是在收到提示时更新我的答案,特别是当有更好的方法做事情时,只是指出,
pandas
特别是变化很快