通过for循环将几列除以一个常量

时间:2018-06-14 00:22:41

标签: python pandas

我想通过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'

3 个答案:

答案 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_dtypesupdate

一起使用
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