簡體   English   中英

使用loc時警告熊貓

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM