python - Python Pandas中DataFrame中的值聚合?
问题描述
我有如下合同的 DataFrame:
df = pd.DataFrame ({"ID" : ["1", "2", "1", "2"],
"currency" : ["USD", "USD", "EUR", "CHF"],
"amount" : [100, 200, 400, 500]})
我需要计算:
- (col1) 欧元货币合约数量
- (col2) 使用欧元以外货币的合约数量
- (col3) 4 欧元合约金额/ (col4) 欧元以外货币合约金额
解决方案
用于带有聚合DataFrame.assign
的新列(lambda 用于处理 in 之前计数的新列) :assign
sum
cols = ['col1','col2','col3','col4']
df = (df.assign(col1 = df.currency == 'EUR',
col2 = df.currency != 'EUR',
col3 = lambda x: df.amount.mask(x.col2, 0),
col4 = lambda x: df.amount.mask(x.col1, 0))
.groupby(df['ID'])[cols]
.sum()
.reset_index())
print (df)
ID col1 col2 col3 col4
0 1 1 1 400 100
1 2 0 2 0 700
推荐阅读
- c# - 如何在 Form 的所有侧面用 C# 绘制?
- angular - 条件提供者连接
- maven - Maven:将版本范围解析为属性
- vuejs2 - 如何使用 VueJS 从父级向子级发送数据?
- c# - 将 Memorystream 附加到现有的 Memorystream
- layout - 在 ListView / GridView 内连续创建类别产品
- algorithm - 为人类活动识别选择正确的机器学习算法
- javascript - 添加具有特定 ID 的文档而不覆盖现有的文档
- python - 将整数和字符串列表转换为纯字符串
- firebase - Firebase:实时数据库行的颜色行是什么意思