我有一个如下的数据框架:
data_dict = {'id': {0: 'G1', 1: 'G2', 2: 'G3'},
'S': {0: 35.74, 1: 36.84, 2: 38.37},
'A': {0: 8.34, 1: '2.83%', 2: 10.55},
'C': {0: '6.63%', 1: '5.29%', 2: 3.6}}
df = pd.DataFrame(data_dict)
如果数据框中的所有值以%结尾,我想将它们乘以10000(列‘id’-第1列除外):
cols = df.columns[1:]
for index, row in df.loc[:, df.columns != 'id'].iterrows():
for c in cols:
if str(row[c]).endswith('%'):
data_value = str(row[c])
data_value = data_value.replace('%',"")
df.at[index,c]= float(data_value) * 10000
最后,将所有列值(第一列除外)设置为NUMERIC:
df[cols[1:]] = df[cols[1:]].apply(pd.to_numeric, errors='coerce')
有没有一种简单的方法来转换值而不是迭代行?