【问题标题】:Change value of all rows in a column of pandas data frame更改熊猫数据框列中所有行的值
【发布时间】:2017-01-16 14:59:40
【问题描述】:

我有一个数据框df,比如:

        measure  model threshold
285   0.241715  a        0.0001
275   0.241480  a        0.0001
546   0.289773  b        0.0005
556   0.241715  b        0.0005
817   0.357532  a         0.001
827   0.269750  b         0.001
1088  0.489164  a        0.0025

我想将model 列中的所有值更改为'no_model'。我该怎么做?

我目前正在做df['model'] = 'no_model',但我得到:

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

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  df['model'] = 'no_model'

【问题讨论】:

  • 你试过df.loc[:, 'model'] = 'no model'吗?
  • 你的意思是,改变'model'的名字?
  • 是的,@JonClements 收到了同样的警告。
  • 在此调用之前您已经做了一些事情来引发此警告,可能您已截取或过滤了原始 df,您打算处理原始 df 的视图还是副本?
  • @user2241910 不,列名相同,列中的每个值都变为'no_model'。

标签: python pandas dataframe slice


【解决方案1】:

您收到警告是因为您可能引用了原始 df:

df1 = df

然后尝试了您的代码,但您的意图是复制,因此您应该使用copy() 明确复制:

df_copy = df.copy()

这将消除警告

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2020-08-06
    • 2023-02-21
    • 1970-01-01
    • 2019-11-19
    • 2021-12-29
    相关资源
    最近更新 更多