Итерация по столбцам и одновременное сохранение значений различных столбцов - PullRequest
0 голосов
/ 18 октября 2019

Итерация по 4 столбцам и извлечение значений: когда количество столбцов куплено и цена покупки заполнена (342,21), она должна быть извлечена, затем должна быть проверена следующая строка, где снова будут получены количество купленного товара и цена покупки (2330,45)), но затем, проверяя следующую строку, которая является nan, я хочу извлечь количество продажи и цену продажи (110,56)

I Have the below Dataframe 
I wanted to extract values of 4 columns row by row
Quantity bought=342,21
Date=20.3.2019
Quantity Bought=2330,45
Date=21.3.2019
then it will fetch the other columns value
Quantity Sold=110,56
Date=22.3.2019
then again extracted are 
Quantity Sold=221,21
Date=24.3.2019
then 
Quantity Bought=344,22
Date=25.5.2019
then 
Quantity Sold=455,29
29.6.2019 
Quantity Sold=566,30
Date=30.6.2019


ef={'Date':['20.3.2019','21.3.2019','22.3.2019','24.3.2019','25.5.2019','29.6.2019','30.6.2019'],
    'Quantity Bought':[342.0,2330.0,'nan','nan',344,'nan','nan'],
    'Buy Price':[21.0,45.0,'nan','nan',22,'nan','nan'],
    'Sell Quantity':['nan','nan',110,221,'nan',455,566],
    'Sell Price':['nan','nan',56,21,'nan',29,30]}
ef=pd.DataFrame(ef)


#And I wanted to be  added simultaneously in

el=[Trade(pd.to_datetime('20.03.2019',format='%d.%m.%Y'), 342, 21)]                                                                       
el = [Trade(pd.to_datetime('21.03.2019',format='%d.%m.%Y'), 2330, 45)
el.append(Trade(pd.to_datetime('22.03.2016',format='%d.%m.%Y'), -110, 56))
el.append(Trade(pd.to_datetime('24.03.2016',format='%d.%m.%Y'), -221, 21))
el.append(Trade(pd.to_datetime('25.05.2016',format='%d.%m.%Y'), 344, 22)) 
el.append(Trade(pd.to_datetime('29.06.2016',format='%d.%m.%Y'), -455, 29))
el.append(Trade(pd.to_datetime('30.06.2016',format='%d.%m.%Y'), -566, 30))]

1 Ответ

1 голос
/ 18 октября 2019

Надеюсь, это то, что вы имеете в виду:

import pandas as pd
import numpy as np


ef={'Date':['20.3.2019','21.3.2019','22.3.2019','24.3.2019','25.5.2019','29.6.2019','30.6.2019'],
    'Quantity Bought':[342.0,2330.0,'nan','nan',344,'nan','nan'],
    'Buy Price':[21.0,45.0,'nan','nan',22,'nan','nan'],
    'Sell Quantity':['nan','nan',110,221,'nan',455,566],
    'Sell Price':['nan','nan',56,21,'nan',29,30]}
ef=pd.DataFrame(ef)

ef.replace('nan', np.nan, inplace=True)

numberOfRows = len(ef.index)

el={'Date':[],
    'Quantity':[],
    'Price':[]}
el = pd.DataFrame(el)

row = 0
i = 0

while i < numberOfRows:
    if ef.isnull().iat[row,1] != True:
        adding = pd.DataFrame({"Date":[ef.iat[row,0]],
                               "Quantity":[ef.iat[row,1]],
                               "Price":[ef.iat[row,2]]})
        el = el.append(adding, ignore_index=True)
        i += 1
        row += 1
    else:
        adding = pd.DataFrame({"Date": [ef.iat[row, 0]],
                               "Quantity": [ef.iat[row, 3]*(-1)],
                               "Price": [ef.iat[row, 4]]})
        el = el.append(adding, ignore_index=True)
        i += 1
        row += 1
print(el)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...