[英]pandas warning when using loc
我有此代碼示例,該示例應使用分組方式將數據幀拆分為較小的數據幀,並在“ num”列中的數字為偶數的情況下修改較小的數據幀:
import pandas as pd
df = pd.DataFrame({
'id1': [1]*5+[2]*5,
'num': range(11, 21),
'x': range(10)
})
print df
for id1, grouped_df in df.groupby('id1'):
grouped_df.loc[grouped_df['num'] % 2 == 0, 'num'] = 'even'
print grouped_df
print df
但是,當我運行此代碼時,遇到警告:
/usr/local/lib/python2.7/dist-packages/pandas/core/indexing.py:537:SettingWithCopyWarning:正在嘗試從DataFrame的切片副本上設置一個值。 嘗試改用.loc [row_indexer,col_indexer] = value
請參閱文檔中的警告: http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
並且在“真實”數據上運行時,代碼非常慢。
根據我的理解,此警告建議使用loc
但我已經在使用它! 大熊貓是否按切片查看分組依據返回的數據框? 如何擺脫這種警告並確保預期的行為?
使用copy
:
for id1, grouped_df in df.groupby('id1'):
grouped_df = grouped_df.copy()
grouped_df.loc[grouped_df['num'] % 2 == 0, 'x'] = 'even'
print (grouped_df)
id1 num x
0 1 11 0
1 1 12 even
2 1 13 2
3 1 14 even
4 1 15 4
id1 num x
5 2 16 even
6 2 17 6
7 2 18 even
8 2 19 8
9 2 20 even
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.