【问题标题】:Pandas DataFrame filterPandas DataFrame 过滤器
【发布时间】:2018-10-01 12:36:26
【问题描述】:

我的问题是关于 pandas.DataFrame.filter 命令的。似乎熊猫创建了数据框的副本来写入任何更改。我怎样才能在数据框本身上写?

换句话说:

d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.filter(regex='col1').iloc[0]=10

输出:

   col1  col2
0     1     3
1     2     4

期望的输出:

   col1  col2
0    10     3
1     2     4

【问题讨论】:

  • 任何人都可以解释否决票?

标签: python pandas dataframe


【解决方案1】:

我认为您需要提取列名,然后使用 lociloc 函数:

cols = df.filter(regex='col1').columns 
df.loc[0, cols]=10

或者:

df.iloc[0, df.columns.get_indexer(cols)] = 10

print (df)
   col1  col2
0    10     3
1     2     4

您不能使用filter 函数,因为子集返回一个Series/DataFrame,它可能将其数据作为视图。这就是为什么 SettingWithCopyWarning 可能在那里(或者如果你设置选项,则提高)。

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2019-05-22
    • 1970-01-01
    • 2019-01-07
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    相关资源
    最近更新 更多