Допустим, я пишу код:
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 маленькой голове.