2013-09-13 12 views
1

Я пытаюсь сделать разделение столбца 0 столбцами 1 и 2. Из ниже, я хотел бы вернуть dataframe из 10 строк, 3 столбца. Первая колонка должна быть 1. Вместо этого я получаю 10x10 фрейм данных. Что я делаю не так?Pandas Multiple Column Division

data = np.random.randn(10,3) 
df = pd.DataFrame(data) 

df[0]/df 

ответ

1

Сначала вы должны создать 10 по 3 DataFrame со всеми столбцами, равными первым столбец, а затем разделить его с DataFrame.

df[[0, 0, 0]]/df.values 

или

df[[0, 0, 0]].values/df 

Если вы хотите сохранить имена столбцов.

(я использую .values, чтобы избежать переиндексацию, который будет разрушаться из-за повторяющихся значений столбцов.)

1

Вы должны соответствовать размерности серии с строками DataFrame. Есть несколько способов сделать это, но мне нравится использовать транспорты.

data = np.random.randn(10,3) 
    df = pd.DataFrame(data) 

    (df[0]/df.T).T 

     0   1   2 
    0 1 -0.568096 -0.248052 
    1 1 -0.792876 -3.539075 
    2 1 -25.452247 1.434969 
    3 1 -0.685193 -0.540092 
    4 1 0.451879 -0.217639 
    5 1 -2.691260 -3.208036 
    6 1 0.351231 -1.467990 
    7 1 0.249589 -0.714330 
    8 1 0.033477 -0.004391 
    9 1 -0.958395 -1.530424