我有一个数据框v
,其中column = ['self','id','desc','name','arch','rel']
。当我重命名如下时,它不会让我删除给出column not found in axis
错误的列。
情况1:
for i in range(0,len(v.columns)):
#I'm trying to add 'v_' prefix to all col names
v.columns.values[i] = 'v_' + v.columns.values[i]
v.drop('v_self',1)
#leads to error
KeyError: "['v_self'] not found in axis"
但是,如果我按以下方式进行操作,则效果很好
情况2:
v.columns = ['v_self','v_id','v_desc','v_name','v_arch','v_rel']
v.drop('v_self',1)
# no error
在两种情况下,如果我都遵循它,则其列的结果相同
v.columns
#both cases gives
Index(['v_self', 'v_id', 'v_description', 'v_name', 'v_archived',
'v_released'],
dtype='object')
我不明白为什么case1会出现错误?请帮忙,谢谢。
那是因为.values
返回基础值。您不应该直接更改那些。.columms
不过,支持直接分配给。
尝试这样的事情:
import pandas
df = pandas.DataFrame(
[
{key: 0 for key in ["self", "id", "desc", "name", "arch", "rel"]}
for _ in range(100)
]
)
# Add a v_ to every column
df.columns = [f"v_{column}" for column in df.columns]
# Drop one column
df = df.drop(columns=["v_self"])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句