Кадр данных умножается на соответствующее значение индекса - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть df, который содержит в основном нули со случайным числом, я хочу умножить каждое число в df на его значение индекса, деленное на 60.

Я пробовал;

for a, b in enumerate(df):
    df[b][a] = df[b][a] * (df.index[a]/60)

Например, если df равен;

Index    A    B    C    D
1000        0    0    0    0
2000        0    0    4    0
3000        0    0    0    0
4000        0    2    0    0
5000        0    0    0    0
6000        0    0    4    0

Тогда вывод должен быть:

Index    A    B    C    D
1000     0    0    0    0
2000     0    0    33.33    0
3000     0    0    0    0
4000     0    133.33    0    0
5000     0    0    0    0
6000     0    0    400    0

Где я иду не так? Любая помощь действительно приветствуется, спасибо!

ОБНОВЛЕНИЕ

Я закончил с использованием;

for c in df_trq.columns[1:]:
    df_trq[c] = (df_trq[c] * df_trq.index.values) / 60

Это сработало, потому что я ранее установил индекс значения как что-то еще.

Спасибо

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Вы почти у цели, делайте так:

for c in df.columns[1:]:
    df[c] = (df[c] * df['Index']) / 60

   Index    A           B           C    D
0   1000  0.0    0.000000    0.000000  0.0
1   2000  0.0    0.000000  133.333333  0.0
2   3000  0.0    0.000000    0.000000  0.0
3   4000  0.0  133.333333    0.000000  0.0
4   5000  0.0    0.000000    0.000000  0.0
5   6000  0.0    0.000000  400.000000  0.0
0 голосов
/ 25 февраля 2020

Вы можете попробовать это:

(df.index.values[:, np.newaxis] / 60) * df


Out[50]:

     a   b         c
1000 0.0 0.000000  0.000000
2000 0.0 0.000000  133.333333
3000 0.0 0.000000  0.000000
4000 0.0 133.333333 0.000000 
5000 0.0 0.000000 0.000000
6000 0.0 0.000000 400.000000

Ваш результат неверен:

6000 * 4/60 = 400, а не 600

2000 * 2/60 = 133,33 не 33,33

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...