回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个pandas列<code>Amort</code>,每行包含字符串值,如每行中的<code>3,312.50 @ Mar 31, 2020; 3,312.50 @ Jun 30, 2020; 3,312.50 @ Sep 30, 2020; 3,312.50 @ Dec 31, 2020; 3,312.50 @ Mar 31, 2021</code>,我想创建与每一年关联的列,其中包含与每一年关联的浮点值的总和。因此,对于上面的字符串,新创建的列<code>Amort_2020</code>的值为3312.50*4。但是我已经意识到<code>Amort</code>中有一些类似于<code>0.64 @ Mar 31, 2020; 0.64 @ Jun 30, 2020; 0.64 @ Sep 30, 2020; 0.63 @ Dec 31, 2020; 0.64 @ Mar 31, 2021; 238.75 @ Jul 31, 2021</code>的值,所以我下面的初始代码(我希望在此基础上构建的代码)不起作用。我想知道是否有更好的方法来做我想做的事情。我考虑过使用<code>re</code>,但没想到一个好方法</p>
<pre><code>for i in range(0, df.shape[0]):
if df['Amort'].iloc[i] is not None:
l = []
no_periods = (str(df['Amort'].iloc[i])).count('2020') ##for summation
temp = (df['Amort'].iloc[i]).replace("@", "")
temp = temp.replace(",", "") ###so that I can convert to float
for k in range(no_periods):
l.append(float(temp[:8]))
df['Amort_2020'].iloc[i] = sum(l)
</code></pre>
<p>编辑:</p>
<p>在<code>df['Amort']</code>列中添加:</p>
<pre><code>0 3,312.50 @ Mar 31, 2020; 3,312.50 @ Jun 30, 20...
1 1,137.50 @ Jun 17, 2020; 1,137.50 @ Sep 17, 20...
2 394.51 @ Jun 07, 2020; 394.50 @ Sep 07, 2020; ...
3 395.72 @ Jun 07, 2020; 395.73 @ Sep 07, 2020; ...
4 448.86 @ Jun 07, 2020; 448.87 @ Sep 07, 2020; ...
Name: Amort, dtype: object
</code></pre>
<p>预期产出:
2020年
<code>df['Amort_2020']</code>:</p>
<pre><code>0 13250
1 3412.5
2 1183.53
</code></pre>
<p>每年都是如此。行0包含<code>3,312.50 @ Mar 31, 2020; 3,312.50 @ Jun 30, 2020; 3,312.50 @ Sep 30, 2020; 3,312.50 @ Dec 31, 2020; 3,312.50 @ Mar 31, 2021</code>,因为我想总结与每年相关的浮动值,2020年有4个这样的3312.5值,因此它将是3312.5*4=13250。第一行的浮点值乘以4,第1行和第2行的浮点值乘以3,因为2020年仅出现3次</p>