熊猫:在符合条件的条件下将列乘以条件

时间:2017-11-04 15:44:33

标签: python pandas

我在Python中使用pandas。我正在处理的数据帧的一个例子如下:

pd.DataFrame({"A1": [1,2,3], "A2": [1,2,3], "A3": [1,2,3], "A4": [1,2,3], "B1": [3,2,1], "B2": [3,2,1], "B3": [3,2,1], "B4": [3,2,1]})

如果列名以4结尾,我想将列乘以10.所以在这种情况下所需的输出将是

pd.DataFrame({"A1": [1,2,3], "A2": [1,2,3], "A3": [1,2,3], "A4": [10,20,30], "B1": [3,2,1], "B2": [3,2,1], "B3": [3,2,1], "B4": [30,20,10]})

请注意,只更改了A4和B4列。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

使用$ak_day = 1; while($ak_day != 30){ $timestamp = time() - 82800 * $ak_day; $alt_dat = date("Y-m-t", $timestamp); echo $alt_dat. ' - '.$timestamp . ', '; $ak_day++; } columns.str.endswith选择列,然后乘以值ie。

iloc

输出:

   A1  A2  A3  A4  B1  B2  B3  B4
0   1   1   1  10   3   3   3  30
1   2   2   2  20   2   2   2  20
2   3   3   3  30   1   1   1  10

我们也可以进行简短的指定,即cols = df.columns.str.endswith('4') df.iloc[:,cols] = df.iloc[:,cols]*10

答案 1 :(得分:1)

选择要与数组相乘的列的替代解决方案。

import pandas as pd

df = pd.DataFrame({"A1": [1,2,3], "A2": [1,2,3], "A3": [1,2,3], "A4": [1,2,3], "B1": [3,2,1], "B2": [3,2,1], "B3": [3,2,1], "B4": [3,2,1]})

cols = [i for i in df.columns if i.endswith("4")]
df[cols] *= 10

df

输出:

    A1  A2  A3  A4  B1  B2  B3  B4
0   1   1   1   10  3   3   3   30
1   2   2   2   20  2   2   2   20
2   3   3   3   30  1   1   1   10

与iloc相比,我的设置有一些小的时间改进:

  1. 100个循环,最佳3:每循环2.45毫秒
  2. 100个循环,最佳3:每循环2.04毫秒(Bharaths解决方案)