可能是一个琐碎的问题:我有一个pandas数据框和一个带有dtypes混合的列。我想在列项目上运行各种字符串方法,例如str.upper()
,str.lower()
,str.capitalize()
等。它仅适用于列中的字符串值,但是对于数字值(整数/浮点数),我得到nan
。
str.upper()
的示例:
output_table.iloc[:,0] = input_table.iloc[:,0].str.upper()
由于数据帧可能变得非常大(> 1m行),所以我想有一个快速例程,可以通过相应的字符串方法转换输入列。我如何保持数字值不变(不返回nan),而仅转换字符串值?类似于熊猫errors='ignore'
。
我们非常感谢您的帮助。谢谢!
答案 0 :(得分:2)
您可以使用列表理解:
df = pd.DataFrame({'desc': ['apple', "Textwidh500number", 500, -11.6]})
df["desc"] = [i.upper() if isinstance(i, str) else i for i in df["desc"]]
print (df)
desc
0 APPLE
1 TEXTWIDH500NUMBER
2 500
3 -11.6
答案 1 :(得分:2)
我刚刚对pd.to_numeric
做过类似的事情,并传递了errors='coerce'
和.notnull()
。试试这个:
input_table.loc[(pd.to_numeric(input_table['Col_Name'], errors='coerce').notnull()),'Col_Name'].str.upper()