python – 访问dataframe列中值的最佳方法是什么?
发布时间:2020-12-20 12:03:16 所属栏目:Python 来源:网络整理
导读:比如我有 df=pd.DataFrame({'a':[1,2,3]})df[df['a']==3].a = 4 这不会将4分配给3 df[df['a']==3] = 4 但这很有效. 它使我对如何分配工作感到困惑.感谢是否有人可以给我一些参考或解释. 解决方法 您不想使用第二种方法.它返回一个数据帧子切片,并为每一行分
比如我有
df=pd.DataFrame({'a':[1,2,3]}) df[df['a']==3].a = 4 这不会将4分配给3 df[df['a']==3] = 4 但这很有效. 它使我对如何分配工作感到困惑.感谢是否有人可以给我一些参考或解释. 解决方法
您不想使用第二种方法.它返回一个数据帧子切片,并为每一行分配相同的值.
例如, df a b 0 1 4 1 2 3 2 3 6 df[df['a'] == 3] a b 2 3 6 df[df['a']==3] = 3 df a b 0 1 4 1 2 3 2 3 3 第一种方法不起作用,因为布尔索引返回您尝试分配给的列(系列)的副本,因此赋值失败: df[df['a'] == 3].a = 4 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/generic.py:3110: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self[name] = value 因此,您的选项使用基于索引的.loc(按名称访问)或iloc(按索引访问): df.loc[df.a == 3,'a'] = 4 df a 0 1 1 2 2 4 如果要传递布尔掩码,则不能使用iloc. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |