繁体   English   中英

Pandas:如何使用枚举循环更新多个列?

[英]Pandas: How to update multiple columns with enumerate loop?

>>> df
  name  count1 count2 count3 count4
0    a      1     2     10     200
1    b      2     4     20     400
2    c      3     6     30     600

在上面的 df 中,我已经有了名字 count1 和 count2。 我想添加分别为 count1 * 10 和 count2 * 10^2 的列 'count3' 和 'count4'。 如果可能的话,我想在 count1 和 count2 列上执行此操作,而不是添加新列(类似于 inplace=True)。 在我的实际代码中,列数比这多,因此需要使用 for 循环或类似的东西,而不是手动添加 df['column3'] 。 谢谢你。

您可以创建相应的列名和正确的数字以在循环中相乘,如下所示:

num_cols = 5  # edit to whatever the real number is
for i in range(1, num_cols + 1):
    col_name = 'count' + str(i)
    df[col_name] = df[col_name] * (10 ** i) # 10^i

您可以通过重新定义来覆盖列,您可以使用以下方法解决此问题:

df['count3'] = df['count1'] * 10
df['count4'] = df['count2'] * 10 ** 2

我不建议循环,除非逻辑确实重复,如果每列的计算不同,那么循环可能对你没有多大帮助。

您不需要遍历行。 如果您想根据其他列的乘法创建一个新列,这就足够了

>>> df['count3'] = df['count1'] * 10

我们试试看

cols = ['count1', 'count2']
outs = ['count3', 'count4']

df = df.join(pd.concat([df[col].mul(10 ** (i+1)).to_frame(outs[i])
                        for i, col in enumerate(cols)], axis=1))
print(df)

  name  count1  count2  count3  count4
0    a       1       2      10     200
1    b       2       4      20     400
2    c       3       6      30     600

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM