如何在pandas中将指定列转为大写并返回其余所有列数据
问题解法
现有错误代码:
hellodf= hellodf.loc[hellodf['ContactName'].str.upper()]
报错原因
pandas的.loc属性用于按标签筛选行/列,你传入ContactName列转大写后的字符串序列,既不符合.loc的入参规则,也无法实现仅修改单列、保留其余所有列的需求。
正确实现方案
方案1:直接修改原DataFrame
直接对目标列赋值转大写后的结果,其余列保持不变:
hellodf['ContactName'] = hellodf['ContactName'].str.upper()
如果目标列存在空值或非字符串值,可添加na_action='ignore'参数避免报错,空值会原样保留:
hellodf['ContactName'] = hellodf['ContactName'].str.upper(na_action='ignore')
方案2:生成新DataFrame(不改动原始数据)
使用assign方法生成新的DataFrame,仅修改目标列,其余列完全继承原始数据:
hellodf_new = hellodf.assign(ContactName = lambda df: df['ContactName'].str.upper())
内容的提问来源于stack exchange,提问作者keenQuestions
相关产品推荐
相关产品推荐

