假设我有一个这样的数据框,
A | B
2.000000 | "hello 1.0"
3.00000 | "mellow"
| "trello 9.0 elo"
4.0 | "cello 3.00"
我如何获得这样的输出
A | B
2 | "hello 1.0"
3 | "mellow"
| "trello 9.0 elo"
4 | "cello 3.00"
我想将所有列dtypes转换为字符串;但是,我希望仅当列的dtype为数字时才能删除尾随零。
有一种解决方案,您可以使用lambda函数,但我不完全记得格式。
到目前为止,我有这个
df[base_column].astype(str).str.replace(‘.0’, ‘ ‘).replace('nan', np.nan).replace('None', np.nan)
但是此代码还将B列也从hello 1.0转换为hello 1
任何帮助将不胜感激!
答案 0 :(得分:1)
我猜为.0
值缺少值的原因,因此可以使用integer_na
:
cols = df.select_dtypes(np.number).columns
df[cols] = df[cols].astype('Int64')
如果需要将所有数字替换为带有删除的结尾.0
的字符串,请使用:
cols = df.select_dtypes(np.number).columns
df[cols] = df[cols].astype(str).replace('\.0','',regex=True).replace(['nan','None'], np.nan)
答案 1 :(得分:0)
这只会使数字成为整数备用字符串
def func(row):
if type(row[0])!=str:
return (int(row[0]))
df.apply(func,axis=1)