2 回答
TA贡献1875条经验 获得超3个赞
filter以下是使用和select_dtypes查找列的一种方法:
cols = df.filter(like="col").select_dtypes("object").columns
或者,您可以提取 1 行并查找%:
cols = df.columns[df.loc[0].astype(str).str.endswith("%")]
两者都会为您提供列名称。
df[cols] = df[cols].replace("%", "", regex=True).astype(float)/100
print (df)
name date col1 col2 col3 col4
0 a 9/17 1.23 0.049 3.0 1.000
1 b 9/17 2.00 0.061 5.0 2.539
2 c 9/17 6.71 0.079 7.0 0.980
TA贡献1869条经验 获得超4个赞
这可能会让您开始:
import numpy as np
def percent_to_float(percent: str) -> float:
return float(percent[:-1])/100
df.select_dtype(object).apply(np.vectorize(percent_to_float))
这将获取所有列dtype=object(字符串数据存储在dtype=objectin 中),并应用将百分比字符串(如 )转换为浮点数(如 )的pandas函数。4.5%0.045
添加回答
举报