Заполните фрейм данных панд, используя индексы столбцов и строк в качестве переменных - PullRequest
3 голосов
/ 01 июня 2019

Обзор

Как заполнить фрейм данных pandas, используя математические вычисления, в которых индексы столбцов и строк используются в качестве переменных.

Настройка

import pandas as pd
import numpy as np

df = pd.DataFrame(index = range(5), columns = ['Combo_Class0', 'Combo_Class1', 'Combo_Class2', 'Combo_Class3', 'Combo_Class4'])

Цель

Каждая ячейка в df = индекс строки * (индекс столбца + 2)

Final Objective

Попытка 1

Вы можете использовать это решение для создания следующего кода:

row = 0
for i in range(5):
    row = row + 1
    df.loc[i] = [(row)*(1+2), (row)*(2+2), (row)*(3+2), (row)*(4+2), (row)*(4+2), (row)*(5+2)]

Попытка 2

Это решение также показалось актуальным, хотя я думаю, что я вас читал 'не должен перебирать циклы данных.Кроме того, я не вижу, как перебирать строки и столбцов:

for i, j in df.iterrows(): 
    df.loc[i] = i

Ответы [ 2 ]

3 голосов
/ 01 июня 2019

Вы можете использовать broadcasting для более эффективного подхода:

ix = (df.index+1).to_numpy() # .values for pandas 0.24< 
df[:] = ix[:,None] * (ix+2)

print(df)

        Combo_Class0  Combo_Class1  Combo_Class2  Combo_Class3  Combo_Class4
0             3             4             5             6             7
1             6             8            10            12            14
2             9            12            15            18            21
3            12            16            20            24            28
4            15            20            25            30            35
2 голосов
/ 01 июня 2019

Использование multiply outer

df[:]=np.multiply.outer((np.arange(5)+1),(np.arange(5)+3))
...