Как найти сумму столбца? - PullRequest
2 голосов
/ 06 марта 2020
dict={"asset":["S3","S2","E4","E1","A6","A8"],
"Rank":[1,2,3,4,5,6],"number_of_attributes":[2,1,2,2,1,1],
"number_of_cards":[1,2,2,1,2," "],"cards_plus1":[2,3,3,2,3," "]}

dframe=pd.DataFrame(dict,index=[1,2,3,4,5,6],
columns=["asset","Rank","number_of_attributes","number_of_cards","cards_plus1"])

Я хочу сделать константу столбца "cards_plus1". Как я могу это сделать? вывод столбца cumsum должен быть таким: 0 2 5 8 10 13

Ответы [ 2 ]

1 голос
/ 06 марта 2020

я хочу начать с нуля вместо 2 .. я хочу это outup: cards_plus1_cumsum 0 2 5 8 10 13

Мы можем просто добавить ноль до сумм:

dframe["cumsum"] = np.pad(dframe["cards_plus1"][:-1].cumsum(), (1, 0), 'constant')
0 голосов
/ 06 марта 2020

Попробуйте:

Сначала замените пустые значения на nan

import pandas as pd
import numpy as np

dict={"asset":["S3","S2","E4","E1","A6","A8"],"Rank":[1,2,3,4,5,6],"number_of_attributes":[2,1,2,2,1,1],
          "number_of_cards":[1,2,2,1,2," "],"cards_plus1":[2,3,3,2,3," "]}

dframe=pd.DataFrame(dict,index=[1,2,3,4,5,6],
columns=["asset","Rank","number_of_attributes","number_of_cards","cards_plus1"])

## replace blank values by nan
print(dframe.replace(r'^\s*$', np.nan, regex=True, inplace=True))

print (dframe)
>>> asset  Rank  number_of_attributes  number_of_cards  cards_plus1
1    S3     1                     2              1.0          2.0
2    S2     2                     1              2.0          3.0
3    E4     3                     2              2.0          3.0
4    E1     4                     2              1.0          2.0
5    A6     5                     1              2.0          3.0
6    A8     6                     1              NaN          NaN

Теперь тип данных столбца cards_plus1 - object - измените на цифру c

### convert data type of the cards_plus1 to numeric 
dframe['cards_plus1'] = pd.to_numeric(dframe['cards_plus1'])

Теперь вычислите кумулятивную сумму

### now we can calculate cumsum
dframe['cards_plus1_cumsum'] = dframe['cards_plus1'].cumsum()

print(dframe)
>>>
asset  Rank  number_of_attributes  number_of_cards  cards_plus1  \
1    S3     1                     2              1.0          2.0   
2    S2     2                     1              2.0          3.0   
3    E4     3                     2              2.0          3.0   
4    E1     4                     2              1.0          2.0   
5    A6     5                     1              2.0          3.0   
6    A8     6                     1              NaN          NaN   

   cards_plus1_cumsum  
1                 2.0  
2                 5.0  
3                 8.0  
4                10.0  
5                13.0  
6                 NaN 

Вместо замены пустых значений на nan, вы можете заменить их на ноль, в зависимости от того, что вы хотите .. Надеюсь, это помогло ..

...