我想通过python中的for循环将几列除以相同的常量。以下是我的数据框的一个子集:
dataframe:DF
team group1 group2 group3 group4
blue 100 400 650 75
green 150 500 350 186
red 200 600 175 540
orange 250 700 900 375
我试过了:
for col in DF.columns[1:]:
DF[col] = df[col]/10
以下代码有效,但我想使用for循环遍历所有列。理想情况下,我不想选择数字列并将除法应用于所有列,如果它确实遇到字符串,则忽略字符串
DF['group1'] = DF['group1']/10
我得到的错误是:'不支持的操作数类型为/:'str'和'int'
答案 0 :(得分:0)
这应该有效
df.loc[:, df.columns[1:]] / 10
答案 1 :(得分:0)
在执行任何数据分析或计算之前,您应确定哪个系列应为数字。您可以通过print(df.dtypes)
查看系列的类型。然后,您可以将相关列转换为数字:
df[col_list] = df[col_list].apply(pd.to_numeric, errors='coerce')
将系列正确定义为数字后,您可以对它们执行矢量化计算;例如:
df[col_list] /= 10
不建议将object
系列与数字和字符串数据混合使用。这将阻止您执行矢量化计算,这是首先使用Pandas的主要好处。
答案 2 :(得分:0)
您可以将select_dtypes
与update
df.update(df.select_dtypes(exclude='object').div(10))
df
Out[8]:
team group1 group2 group3 group4
0 blue 10.0 40.0 65.0 7.5
1 green 15.0 50.0 35.0 18.6
2 red 20.0 60.0 17.5 54.0
3 orange 25.0 70.0 90.0 37.5