熊猫DataFrame过滤器

时间:2018-10-01 12:36:27

标签: python pandas dataframe

我的问题是关于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

1 个答案:

答案 0 :(得分: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可能在那里的原因(或者如果您设置了该选项,则会加薪)。