Путаница с Pandas DataFrame.apply () - PullRequest
2 голосов
/ 09 марта 2020

Допустим, я пишу код:

df2 = pd.DataFrame(np.random.randint(1,5,4).reshape((2,2)), columns=['A', 'B'])
print("dataframe: \n", df2)
print("mean: \n", df2.mean(0))
df2 = df2.apply(lambda x: x - [1, 2], axis=0)
print("altered df2: \n", df2)

Это дает мне результаты:

dataframe: 
    A  B
0  1  1
1  2  2
mean: 
 A    1.5
B    1.5
dtype: float64
altered df2: 
    A  B
0  0  0
1  0  0

Итак, сначала я попросил дать мне среднее значение по axis=0. На мой взгляд, это означает считать каждую строку как вектор и найти среднее значение этих векторов. Кажется, что Pandas согласен со мной в этом вопросе!

Однако затем я использую функцию DataFrame.apply() и снова указываю axis=0. Здесь я ожидаю, что будет работать тот же лог c, который предназначен для выполнения операции над каждой строкой. В этом случае lambda x: x - [1, 2]. Ожидаемый результат:

    A  B
0  0  -1
1  1  0

Но вместо этого, когда я указываю axis = 0 (строки), он фактически выполняет операцию со столбцами.

У меня очень тяжелые времена с pandas, особенно я думаю о том, как он индексирует строки и столбцы, и это еще больше усугубляет путаницу. Как есть, каждый раз, когда я думаю, что понимаю, как все работает, я обнаруживаю, что ошибаюсь, поэтому в моем мозгу ничего не остается. Я прошу простой способ подумать об этом, чтобы он застрял в моей дислекси c маленькой голове.

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