如何将一列混合数据改为百分比、并解决append替换前面数据问题
df为一个有多行多列的dataframe,其中一列df['收益率']包含多种类型(float、NAN、以及string),希望把df['收益率']中的float转为百分比格式,其他数据不变。
代码如下:
def astype_percent(df):
t = []
for i in df:
use_dict = {}
if type(i) == float:
if not np.isnan(i):
i = '%.2f%%' % (i * 100)
if type(i) == str:
use_dict = str(i)
t.append(use_dict)
return pd.Series(t)
df['收益率'] = astype_percent(df['收益率'])
然后发现df['收益率'] 这列整体往前移动了一行,导致错位、最后一行缺值。
查了如何解决append替换前面数据的问题,但没有起作用
import pandas as pd
import numpy as np
df = pd.DataFrame({'收益率': ['4', 0.5, np.NAN, 0.36,0.45678, 1,'0.345','aaa']})
print(df)
def astype_percent(data):
if isinstance(data,float):
if np.isnan(data):
return data
return '%.2f%%' % (data * 100)
elif isinstance(data,int):
return '%.2f%%' % (data * 100)
elif isinstance(data,str):
try:
data = float(data)
except:
return np.NAN
else:
return '%.2f%%' % (float(data) * 100)
df['收益率'] = df['收益率'].apply(astype_percent)
print(df)
import pandas as pd
import numpy as np
def astype_percent(df):
t = []
for i in df:
if type(i) == float and not np.isnan(i):
i = '%.2f%%' % (i * 100)
t.append(i)
return pd.Series(t)
df = pd.DataFrame({'收益率':['aaaa',0.5,np.NAN,0.36,'bbbb']})
print(df)
df['收益率'] = astype_percent(df['收益率'])
print(df)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!