可能是一个微不足道的问题:我有一个熊猫数据帧和一个带有混合dtypes的列。我想在列项上运行各种字符串方法,例如str.upper()
、str.lower()
、str.capitalize()
等。它仅适用于列中的字符串值,但是对于数值(整数/浮点数(,我得到nan
.
str.upper()
示例:
output_table.iloc[:,0] = input_table.iloc[:,0].str.upper()
- Justtext -> JUSTTEXT
- 文本与500数字-> TEXTWITH500NUMBER
- 500 -> 楠 -
- 11.6 -> 楠
由于数据帧可能会变得非常大(> 1m 行(,我希望有一个快速例程来通过各自的字符串方法来转换输入列。如何保持数值不变(不返回 nan(并仅转换字符串值?类似于熊猫errors='ignore'
的东西.
任何帮助都非常感谢。谢谢!
您可以使用列表推导:
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
我只是对pd.to_numeric
做了类似的事情,并通过errors='coerce'
和.notnull()
.试试这个:
input_table.loc[(pd.to_numeric(input_table['Col_Name'], errors='coerce').notnull()),'Col_Name'].str.upper()