This is a very basic question, I just can not seem to find an answer.
I have a dataframe like this, called df:
A B C
a.1 b.1 c.1
a.2 b.2 c.2
a.3 b.3 c.3
Then I extract all the rows from df, where column 'B' has a value of 'b.2'. I assign these results to df_2.
df_2 = df[df['B'] == 'b.2']
df_2 becomes:
A B C
a.2 b.2 c.2
Then, I copy all the values in column 'B' to a new column named 'D'. Causing df_2 to become:
A B C D
a.2 b.2 c.2 b.2
When I preform an assignment like this:
df_2['D'] = df_2['B']
I get the following warning:
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 the caveats in the documentation:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
I have also tried using .loc when creating df_2 like this:
df_2 = df.loc[df['B'] == 'b.2']
However, I still get the warning.
Any help is greatly appreciated.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…