Ответ 1
>>> import pandas as pd
>>> df = pd.DataFrame([[1,2],[3,4]], columns=list('ab'))
>>> df
a b
0 1 2
1 3 4
>>> df['c'] = df['b']**2
>>> df
a b c
0 1 2 4
1 3 4 16
Как можно выровнять каждый элемент столбца/серии DataFrame в пандах (и создать еще один столбец для хранения результата)?
>>> import pandas as pd
>>> df = pd.DataFrame([[1,2],[3,4]], columns=list('ab'))
>>> df
a b
0 1 2
1 3 4
>>> df['c'] = df['b']**2
>>> df
a b c
0 1 2 4
1 3 4 16
В принятом ответе ничего плохого нет, есть также:
df = pd.DataFrame({'a': range(0,100)})
np.square(df)
np.power(df, 2)
Что происходит быстрее:
In [11]: %timeit df ** 2
10000 loops, best of 3: 95.9 µs per loop
In [13]: %timeit np.square(df)
10000 loops, best of 3: 85 µs per loop
In [15]: %timeit np.power(df, 2)
10000 loops, best of 3: 85.6 µs per loop
>>> import pandas as pd
>>> df = pd.DataFrame([[1,2],[3,4]], columns=list('ab'))
>>> df
a b
0 1 2
1 3 4
>>> df['c'] = df['b']**2
>>> df
a b c
0 1 2 4
1 3 4 16
Из-за проблемы с репутацией я не смог добавить комментарий, но хочу узнать, есть ли способ выполнять эти операции без указания имени coulmns?
То есть df[2] = df[1]**2
есть ли способ указать номер столбца вместо имен?
Благодарю.
Приведенный выше код предоставлен @postelrich