我正在处理包含不可用格式数据的文件。处理完其中一个文件后,我剩下一个数据框和一个奇异值。
数据框如下所示:
df = pd.DataFrame({
'A': ['foo', 'foo', 'foo', 'fizz', 'fizz', 'fizz', 'fizz'],
'B': ['bar', 'bar', 'bar', 'buzz', 'buzz', 'buzz', 'baz'],
'C': [10,10,10,10,10,10,10]
})
val = 20.0
该值不应该是我的数据框的一部分,但需要包含在我的 TOTAL 计算中。这是我将其读入数据框后从文件中提取它的方法(它返回一个字符串,因此我将其转换为浮点数):
if len(df.loc[df['ID'].eq("Settle"), 'C'].values) > 0:
temp = df.loc[df['ID'].eq("Settle"), 'C']
if temp.values[0].isnumeric():
num = float(temp.values[0])
else:
num = 0.0
else:
num = 0.0
现在我需要处理groupby.agg()
以下条件:
- 如果
A == 'foo'
我需要将 val 添加到总和中
这是我用来获取 中每个值的总和的基本代码A
,但我无法弄清楚如何影响我的条件。我假设我可以使用np.where
或,lambda
但不确定如何使用它.agg()
并实现我的输出。
out = df.groupby(['A'], sort=False, as_index=False).agg({"C":"sum"})
预期输出:
A C
foo 50
fizz 40
concat
您可以在执行聚合之前附加一行带有额外值(例如):输出:
如果要向多个组添加不同的值: