Mat*_*ttB 9 python indexing pandas
使用.loc对索引/切片的赋值进行一般性提问.
假设下面的DataFrame,df:
df:
A B C
0 a b
1 a b
2 b a
3 c c
4 c a
Run Code Online (Sandbox Code Playgroud)
代码重现:
df = pd.DataFrame({'A':list('aabcc'), 'B':list('bbaca'), 'C':5*[None]})
Run Code Online (Sandbox Code Playgroud)
我使用以下方法创建df1:
df1=df.loc[df.A=='c']
df1:
A B C
3 c c
4 c a
Run Code Online (Sandbox Code Playgroud)
然后我根据B中的值为C赋值:
df1.loc[df1.B=='a','C']='d'
Run Code Online (Sandbox Code Playgroud)
赋值有效,但我收到了SettingWithCopy警告.我做错了什么或这是预期的功能?我认为使用.loc会避免链接赋值.有什么东西我错过了吗?我正在使用熊猫14.1
对OP的评论中的@EdChum答案已解决了该问题。即替换
df1=df.loc[df.A=='c']
Run Code Online (Sandbox Code Playgroud)
与
df1=df.loc[df.A=='c'].copy()
Run Code Online (Sandbox Code Playgroud)
这将使您的意图清晰明了,并且不会发出警告
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |