我有一个 Dataframe 如下:
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')
有没有一种简单的方法来转换值而不是迭代行?
4条答案
按热度按时间bvn4nwqk1#
您可以使用以下选项仅选择所需的列:
然后使用applymap:
pgvzfuti2#
我将使用一个自定义函数:
输出:
hgb9j2n63#
使用
applymap
重写代码。8e2ybdfx4#
可以将所有值转换为浮点型,并使用
np.where
将以%
结尾的值乘以10000:输出: