- 主题:自学渣想了好久搞不定,求问
啊,那我要再仔细看看你的贴子,抱歉啊
【 在 Tnnnnn 的大作中提到: 】
: 我想要的是A往前N天的累计和,N的值取自对位。
: 不是两列的对位和。
:
--
FROM 52.9.227.*
感谢感谢
【 在 hongyan2022 的大作中提到: 】
: 啊,那我要再仔细看看你的贴子,抱歉啊
--
FROM 211.161.241.*
我猜你想要的是:
def SUM(S, N): #对序列求N天累计和,返回序列 N=0返回零
return pd.Series(S).iloc[-N:].sum() if N>0 else 0
df['C'] = df['B'].apply(lambda x:SUM(df['A'], x))
【 在 Tnnnnn 的大作中提到: 】
: 最后一行代码,出错,找不到替代的方法
:
: import numpy as np
: ...................
--
FROM 123.118.102.*
感觉快对了,现在结果是这样的
A B C
0 1.0 14 14.0
1 1.0 8 8.0
2 1.0 0 0.0
3 1.0 11 11.0
4 1.0 0 0.0
预期的C这样的:
A B C
0 1.0 14 1.0
1 1.0 8 2.0
2 1.0 0 0.0
3 1.0 11 4.0
4 1.0 0 0.0
【 在 mof 的大作中提到: 】
: 我猜你想要的是:
: def SUM(S, N): #对序列求N天累计和,返回序列 N=0返回零
: return pd.Series(S).iloc[-N:].sum() if N>0 else 0
: ...................
--
修改:Tnnnnn FROM 211.161.241.*
FROM 211.161.241.*
#增加一列,表示行数
df['N'] = range(1, len(df)+1)
df['C'] = df.apply(axis=1, func=lambda row: 0 if row['B']==0 else df['A'][:int(row['N'])][-int(row['B']):].sum())
不用那个SUM了,直接写累加
【 在 Tnnnnn 的大作中提到: 】
: 感觉快对了,现在结果是这样的
:
: A B C
: ...................
--
FROM 123.118.102.*
太nb了,这就是我想要的,
热泪盈眶,感激涕零!
【 在 mof 的大作中提到: 】
: #增加一列,表示行数
: df['N'] = range(1, len(df)+1)
: df['C'] = df.apply(axis=1, func=lambda row: 0 if row['B']==0 else df['A'][:int(row['N'])][-int(row['B']):].sum())
: ...................
--
FROM 211.161.241.*
不是非常确定你的意图
按我现在的理解
不需要生成B ,反正是一堆随机数,在SUM 里直接产生就是了
然后,用一个循环生成LIST ,再加入到现有的dataframe
【 在 Tnnnnn 的大作中提到: 】
: def SUM(S, N): #对序列求N天累计和,返回序列 N=0返回零
return pd.Series(S).rolling(N).sum().values if N>0 else 0
: ...................
--
FROM 13.56.31.*
【 在 Tnnnnn 的大作中提到: 】
: 最后一行代码,出错,找不到替代的方法
:
: import numpy as np
: ...................
df['C'] = [np.sum(df['A'][:s][-e:]) if e!=0 else 0 for s,e in zip(range(1,len(df)+1), df['B'])]
--
FROM 124.126.0.*
好的,谢谢
【 在 poggy 的大作中提到: 】
: df['C'] = [np.sum(df['A'][:s][-e:]) if e!=0 else 0 for s,e in zip(range(1,len(df)+1), df['B'])]
--
FROM 211.161.241.*