python - 汇总数据框中的设置值
问题描述
我试图对作为一组 int 的 dataFrame 中的列求和。
像:['xxxx',{1,2,3}] 我需要 ['xxxx',6]
谢谢你的帮助。
for index,row in df_clusters.iterrows():
if isinstance(row['sum_coefs'],set):
row.loc['sum_coefs']=sum(row['sum_coefs'])
我在输出中得到了一个未更改的 Dataframe,其中我的 sum_coefs 列中有一个集合,而不是总和。
解决方案
可以尝试使用Series.apply
:
# Setup
df_clusters = pd.DataFrame(['xxxx',set([1,2,3])], columns=['sum_coefs'])
def sum_sets(val):
if isinstance(val, set):
return sum(val)
return val
df_clusters['sum_coefs'] = df_clusters['sum_coefs'].apply(sum_sets)
[出去]
0 xxxx
1 6
dtype: object
或者,使用内联lambda
函数来实现相同的结果:
df_clusters['sum_coefs'] = df_clusters['sum_coefs'].apply(lambda x: sum(x) if isinstance(x, set) else x)
推荐阅读
- azure - 通过 azure 数据工厂进行 upsert 活动期间的延迟
- javascript - 数组以错误的顺序出现
- java - Comparator.compare() 如何工作?
- php - 独特设备的最佳 php 登录系统逻辑是什么?
- typescript - 在 Firebase Cloud Functions 单元测试中验证 Firestore 写入结果
- c++ - 在 C++ 中让一个数组指向另一个具有不同边界的数组
- android - MotionLayout - clicking on the layout behaves incorrectly
- asp.net - 如何查找 URL 注册(不是预订)?
- unity3d - 仅显示部分纹理
- javascript - 如何在撇号中重构客户端 js