想請問一下如果dataframe有一組資料
我想要讓他每3筆加總一次有指令嗎?
想要變成下面sum1那樣
index data1 sum1
0 2
1 4
2 5 11
3 6 15
4 7 18
5 8 21
6 9 24
7 10 27
謝謝大家幫忙目前剛入門python..我也是用比較笨的方法去跑迴圈
因為在dataframe架構下所以我用了iloc也分享給大家
for i in range(len(data)-passcount):
print(df.iloc[i+1:i+passcount+1,0].sum())
剛申請帳號權限不足無法使用回答
參考:Sum last X column values into new column
根據內容猜測為所在列數前三列總和rolling_sum()
sum[temp]=data[temp-2:temp]
pd.rolling_sum(s2['data'], 3)
表單名稱.rolling_sum(表單名稱['data'], 前三列)
import pandas as pd
import numpy as np
s2 = pd.DataFrame(np.random.randint(10,size=(8,1)),columns=["data"])
print(s2)
s2['mean_sum'] = pd.rolling_sum(s2['data'], 3)
print(s2)
也感謝樓上的高手,讓我學到許多。
我也來回答個笨方法吧!!
import pandas as pd
datas = [2, 4, 5, 6, 7, 8, 9, 10]
column = ['data1']
df = pd.DataFrame(datas, columns=column)
df['sum1'] = None
sum_total = sum([df.loc[x, 'data1'] for x in range(3)])
sum1 = [sum_total]
for i in range(len(datas)-3):
sum_total += (df.iloc[i+3, 0] - df.iloc[i, 0])
sum1.append(sum_total)
# df['sum1'][2:] = sum1
df.loc[2:,'sum1'] = sum1
print(sum1)
print(df)
哈哈!我pandas也只了解基本功能一些,有需要才上網找文件。
另外想問一下 有辦法在畫圖時不畫NAN的資料嗎 我如果用dropna他試用整個dataframe去看
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame([1,2,3,4,5], columns=['idx'])
df['price']=['nan',200,300,440,684]
df['price2']=['nan','nan',300,440,684]
df['price']=df['price'].astype('float64')
df['price2']=df['price2'].astype('float64')
df.set_index('idx', inplace=True)
df.plot(y='price2', use_index=True)
可用fillna()填上零