Кулинарная книга
Это хранилище для кратких и понятных примеров и ссылок на полезные рецепты pandas. Мы рекомендуем пользователям добавлять в это руководство.
Добавление интересных ссылок и/или встроенных примеров в этот раздел — отличный первый запрос на вытягивание.
По возможности были вставлены упрощенные, сжатые, удобные для начинающих примеры, чтобы дополнить ссылки со Stack Overflow и GitHub. Многие ссылки содержат расширенную информацию, не представленную в встроенных примерах.
Pandas (pd) и Numpy (np) — единственные два сокращенно импортированных модуля. Остальные импортируются явно для новых пользователей.
Эти примеры написаны для Python 3. Для более ранних версий Python могут потребоваться незначительные корректировки.
Идиомы
Вот некоторые полезные идиомы pandas idioms
if-then/if-then-else для одного столбца и присвоения одному или нескольким другим столбцам:
In [1]: df = pd.DataFrame({'AAA': [4, 5, 6, 7],
...: 'BBB': [10, 20, 30, 40],
...: 'CCC': [100, 50, -30, -50]})
...:
In [2]: df
Out[2]:
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
if-then…
An if-then на одном столбце
In [3]: df.loc[df.AAA >= 5, 'BBB'] = -1 In [4]: df Out[4]: AAA BBB CCC 0 4 10 100 1 5 -1 50 2 6 -1 -30 3 7 -1 -50
An if-then с присвоением 2 столбцам:
In [5]: df.loc[df.AAA >= 5, ['BBB', 'CCC']] = 555 In [6]: df Out[6]: AAA BBB CCC 0 4 10 100 1 5 555 555 2 6 555 555 3 7 555 555
Добавьте еще одну строку с другим логическим условием для -else
In [7]: df.loc[df.AAA < 5, ['BBB', 'CCC']] = 2000 In [8]: df Out[8]: AAA BBB CCC 0 4 2000 2000 1 5 555 555 2 6 555 555 3 7 555 555
Или используйте pandas where после создания маски
In [9]: df_mask = pd.DataFrame({'AAA': [True] * 4,
...: 'BBB': [False] * 4,
...: 'CCC': [True, False] * 2})
...:
In [10]: df.where(df_mask, -1000)
Out[10]:
AAA BBB CCC
0 4 -1000 2000
1 5 -1000 -1000
2 6 -1000 555
3 7 -1000 -1000
if-then-else с использованием numpy’s where()
In [11]: df = pd.DataFrame({'AAA': [4, 5, 6, 7],
....: 'BBB': [10, 20, 30, 40],
....: 'CCC': [100, 50, -30, -50]})
....:
In [12]: df
Out[12]:
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
In [13]: df['logic'] = np.where(df['AAA'] > 5, 'high', 'low')
In [14]: df
Out[14]:
AAA BBB CCC logic
0 4 10 100 low
1 5 20 50 low
2 6 30 -30 high
3 7 40 -50 high
Разделение
Разделение фрейма с помощью булевого критерия
In [15]: df = pd.DataFrame({'AAA': [4, 5, 6, 7],
....: 'BBB': [10, 20, 30, 40],
....: 'CCC': [100, 50, -30, -50]})
....:
In [16]: df
Out[16]:
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
In [17]: df[df.AAA <= 5]
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.24.2/user_guide/cookbook.html