цикл столбцов для создания новых столбцов - PullRequest
0 голосов
/ 19 ноября 2018

Мои данные как ниже:

# data
A    B    C
5    10   20
30   90   270
6    36   54

Я использую следующий код для создания новых столбцов:

data['A/B'] = wine['A'] / wine['B']
data['A/C'] = wine['A'] / wine['C']
data['B/C'] = wine['B'] / wine['C']

# data
A    B    C     A/B     A/C     B/C
5    10   20    1/2     1/4     1/2
30   90   270   1/3     1/9     1/3
6    36   54    1/6     1/9     2/3

Если у меня много столбцов, как я могу использовать цикл for для создания новых столбцов? Или есть другие хорошие решения без использования для цикла.

1 Ответ

0 голосов
/ 19 ноября 2018

я могу думать только об использовании для циклов и перестановок, ниже моя попытка.

import pandas as pd
import numpy as np
from itertools import permutations

df = pd.DataFrame(np.random.randint(0,5,size=(5, 3)), columns=list('ABC'))

func = lambda d,x,y: d[x]/d[y]
perms = [x for x in permutations('ABC', 2)]
for p in perms:
    x,y = p
    s = r'/'.join([x,y])
    df[s]=func(df,x,y)
print(df)


A   B   C   A/B A/C B/A B/C C/A C/B
0   0   4   1   0.000000    0.0 inf 4.00    inf 0.250000
1   4   3   4   1.333333    1.0 0.750000    0.75    1.000000    1.333333
2   3   0   2   inf 1.5 0.000000    0.00    0.666667    inf
3   4   2   1   2.000000    4.0 0.500000    2.00    0.250000    0.500000
4   3   0   1   inf 3.0 0.000000    0.00    0.333333    inf
...