Получение определенных pandas данных в кадре приводит к выражению al oop - PullRequest
1 голос
/ 28 февраля 2020
date        close    code
2015-01-13  138.260  110037
2015-01-14  139.810  110037
2015-01-15  139.840  110037
2015-01-19  139.460  313046
2020-02-26  115.551  313046
2020-02-27  116.000  313046
2020-02-21  118.900  128094
2020-02-24  118.100  128094
2020-02-25  116.612  128094

Вот данные, отсортированные по «коду» и «дате». Как написать оператор для l oop, который каждый раз принимает только один кодовый код.

date        close    code
2015-01-13  138.260  110037
2015-01-14  139.810  110037
2015-01-15  139.840  110037

Я пытался использовать df.pivot_table(values='close', index=['code', 'date']), но не смог найти индекс кода.

                     close
code    date               
110037  2015-01-13  138.260
        2015-01-14  139.810
        2015-01-15  139.840
113046  2015-01-19  139.460
        2020-02-26  115.551
        2020-02-27  116.000
128094  2020-02-21  118.900
        2020-02-24  118.100
        2020-02-25  116.612

Ответы [ 2 ]

2 голосов
/ 28 февраля 2020

Используйте GroupBy.apply с некоторой функцией, если хотите обрабатывать данные по уникальным code s:

def func(x):
    print (x)
    #processing
    return x

df = df.groupby('code').apply(func)

L oop Решение:

for name, g in df.groupby('code'):
    print (name)
    print (g)
1 голос
/ 28 февраля 2020

Я бы не использовал a для l oop для Dataframes. Но если вы хотите, вы можете использовать функцию iterrows () и каждый раз проверять данные кода. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html

Вы также можете использовать lo c ()

df.loc[df['code']==110037]

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html

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