Trying to create a new column in the netc df but i get the warning
netc["DeltaAMPP"] = netc.LOAD_AM - netc.VPP12_AM C:\Anaconda\lib\site-packages\ipykernel\__main__.py:1: 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
whats the proper way to create a field in the newer version of Pandas to avoid getting the warning?
pd.__version__ Out[45]: u'0.19.2+0.g825876c.dirty'
You can add the new column to a pandas DataFrame using a dictionary. The keys of the dictionary should be the values of the existing column and the values to those keys will be the values of the new column. After making the dictionary, pass its values as the new column to the DataFrame.
Warnings should never be ignored. If you have ever done data analysis or manipulation with Pandas, it is highly likely that you encounter the SettingWithCopy warning at least once. This warning occurs when we try to do an assignment using chained indexing because chained indexing has inherently unpredictable results.
Vectorization is always the first and best choice. You can convert the data frame to NumPy array or into dictionary format to speed up the iteration workflow. Iterating through the key-value pair of dictionaries comes out to be the fastest way with around 280x times speed up for 20 million records.
As it says in the error, try using .loc[row_indexer,col_indexer]
to create the new column.
netc.loc[:,"DeltaAMPP"] = netc.LOAD_AM - netc.VPP12_AM.
By the Pandas Indexing Docs your code should work.
netc["DeltaAMPP"] = netc.LOAD_AM - netc.VPP12_AM
gets translated to
netc.__setitem__('DeltaAMPP', netc.LOAD_AM - netc.VPP12_AM)
Which should have predictable behaviour. The SettingWithCopyWarning
is only there to warn users of unexpected behaviour during chained assignment (which is not what you're doing). However, as mentioned in the docs,
Sometimes a
SettingWithCopy
warning will arise at times when there’s no obvious chained indexing going on. These are the bugs thatSettingWithCopy
is designed to catch! Pandas is probably trying to warn you that you’ve done this:
The docs then go on to give an example of when one might get that error even when it's not expected. So I can't tell why that's happening without more context.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With