熊猫的str()方法返回nan值-如何保留数字值?

时间:2020-06-24 08:11:00

标签: python pandas string

可能是一个琐碎的问题:我有一个pandas数据框和一个带有dtypes混合的列。我想在列项目上运行各种字符串方法,例如str.upper()str.lower()str.capitalize()等。它仅适用于列中的字符串值,但是对于数字值(整数/浮点数),我得到nan

str.upper()的示例:

output_table.iloc[:,0] = input_table.iloc[:,0].str.upper()

  • Justtext-> JUSTTEXT
  • Textwith500number-> TEXTWITH500NUMBER
  • 500->南
  • -11.6->南

由于数据帧可能变得非常大(> 1m行),所以我想有一个快速例程,可以通过相应的字符串方法转换输入列。我如何保持数字值不变(不返回nan),而仅转换字符串值?类似于熊猫errors='ignore'

我们非常感谢您的帮助。谢谢!

2 个答案:

答案 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()