Pandas str() 方法返回 nan 值 - 如何保留数值?



可能是一个微不足道的问题:我有一个熊猫数据帧和一个带有混合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()

最新更新