我有一个最初存储为所有类型 str 的数字 df ,有时列中的数据存储为百分比,但并不总是相同的列。我不知道哪一列是百分比还是数字。如果它存储为百分比,我需要将其转换为小数。
如何找到哪些列是百分比,然后仅将这些列转换为小数
一个例子
name date col1 col2 col3 col4
a 9/17 1.23 4.90% 3.00 100.00%
b 9/17 2.00 6.10% 5.00 253.90%
c 9/17 6.71 7.90% 7.00 98.00%
期望的输出:
name date col1 col2 col3 col4
a 9/17 1.23 0.049 3.00 1.00
b 9/17 2.00 0.061 5.00 2.539
c 9/17 6.71 0.079 7.00 0.98
我试过
df=df.apply(pd.to_numeric, errors="ignore")
df.iloc[:,2:]=df.iloc[:,2:].apply(lambda x: x.str.strip('%').astype(float)/100, axis=1)
但这是将所有类型为 float 的列设置为 nan。如果列一开始都是 str 类型,那么第二行会将所有值除以 100,这是我不想要的。因此我需要查找并选择仅包含 % 的整个列
就像是
df.loc[:,df.apply(lambda x: x.str.contains("%"), axis=1)]
除此之外,这将为您提供多维键错误的索引
翻过高山走不出你
MMTTMM
相关分类