Добавить значения фрейма данных pandas в список с помощью условия if - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть pandas df, в котором есть один столбец с положительными или отрицательными значениями с плавающей запятой:

snapshot                        0 (column name)
2018-06-21 00:00:00        -60.18
2018-06-21 00:00:15         43.78
2018-06-21 00:00:30        -22.08

Теперь я хочу добавить положительные значения в список, который называется:

excessSupply=[]

и отрицательные значения:

excessLoad=[]

на

        for row in self.dfenergyBalance:

        if self.dfenergyBalance['0'] < 0:

            self.excessLoad.append(self.dfenergyBalance['0'])

        else:

            self.excessLoad.append(0)

(для extraSupply - условие if self.dfenergyBalance> 0)

результатом является ключевая ошибка имени столбца '0'

1 Ответ

0 голосов
/ 20 ноября 2018

По моему мнению, никакие петли (медленные) не нужны, также кажется, что имя столбца имеет номер 0:

mask = dfenergyBalance[0] < 0

excessSupply = dfenergyBalance.loc[mask, 0].tolist()
excessLoad = dfenergyBalance.loc[~mask, 0].tolist()

print (excessSupply)
[-60.18, -22.08]

print (excessLoad)
[43.78]

РЕДАКТИРОВАТЬ:

Для списка только с 0 подлина положительных значений:

excessLoad = [0] * (~mask).sum()
print (excessLoad)
[0]

Если нужен только один список с замененными положительными значениями 0:

L = np.where(mask, dfenergyBalance[0], 0).tolist()
print (L)
[-60.18, 0.0, -22.08]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...