这是数据
| 日期 |结存数量
| ---------------- | ----- |
| 2021-11-01 |7.6 |
| 2021-11-02 |87.4 |
| 2021-11-05 |39.0 |
| 2021-11-06 |27.1 |
| 2021-11-08 |12.0 |
| 2021-11-10 |23.3 |
| 2021-11-11 | 28.6|
| 2021-11-12 |32.1 |
| 2021-11-13 |10.0 |
| 2021-11-14 |44.0 |
| 2021-11-15 |67.8 |
| 2021-11-26 |59.0 |
描述:1.二号的数量等于1号的数量加上2号的数量,同理:26号的数量等于前面25的数量和加上26的数量
2.没有的数据表示当天没有,既为0
问题:我现在想求出这个月每一天的数量分别多少?请问在Python中有什么方法可以更好的来处理这些数据?
使用pandas对原数据进行解析,循环遍历写入字典再转成数据框。代码如下:
import pandas as pd
df=pd.read_csv('tt2.csv',sep='|')
df=df.set_index('日期')
d1=pd.date_range(start='2021-11-01',end='2021-11-30').astype(str)
data={}
for d in d1:
if d in list(df.index):
if d=='2021-11-02' or d=='2021-11-26':
if (pd.to_datetime(d)-pd.Timedelta(1)).strftime('%Y-%m-%d') in list(df.index):
data[d]=df.loc[d,'结存数量']-df.loc[(pd.to_datetime(d)-pd.Timedelta(1)).strftime('%Y-%m-%d'),'结存数量']
else:
data[d] = df.loc[d, '结存数量']
else:
data[d]=df.loc[d,'结存数量']
else:
data[d]=0
res=pd.DataFrame(data.items(),columns=['日期','结存数量'])
print(res.head())
运行结果 :
日期 结存数量
0 2021-11-01 7.6
1 2021-11-02 79.8
2 2021-11-03 0.0
3 2021-11-04 0.0
4 2021-11-05 39.0
如有帮助,请点击采纳按钮支持。
用pandas获取N行数据,然后对某列进行累加计算即可,如果不用pandas就用for循环+excel读取处理