我的问题是关于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
答案 0 :(得分:1)
我认为您需要提取列名称,然后使用loc
或iloc
函数:
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
可能在那里的原因(或者如果您设置了该选项,则会加薪)。