python - Pandas:计算两列中的值而不考虑顺序
问题描述
我有一个表单的 Pandas DataFrame
df = pd.DataFrame({'1':['a','b','c'], '2':['b','a','d'], '3':['0.7','0.6','0.1']}).
我想在此 DataFrame 中添加一列,其中包含特定行出现的次数,而不考虑顺序(因为前两列是无向图的节点)。此外,我想合并那些仅在前两列的顺序上有所不同的行,并取第三列中数字的平均值。在这种情况下,应该是
df = pd.DataFrame({'1':['a','c'], '2':['b','d'], '3':['0.65','0.1'], '4':['2','1']}).
还要考虑 DataFrame 包含超过 100.000 行。
解决方案
采用 -
a=df[['1','2']].values
a.sort(axis=1)
df[['1','2']] = a
df.groupby(['1','2'])['3'].agg(['count','mean']).reset_index()
输出
1 2 count mean
0 a b 2 0.65
1 c d 1 0.10
或者
df[['1','2']] = df[['1','2']].sort_values(1,axis=1)
df.groupby(['1','2'])['3'].agg(['count','mean']).reset_index()
推荐阅读
- python - Python:如何将此字符 \ 放在字符串的末尾
- angular - 显示css类更改后初始化组件
- javascript - 将随机数添加到脚本标记
- assembly - 我需要比较双字数
- firebase - 在 GitHub 上创建新存储库时,我应该隐藏我的 firebase(或其他后端)代码的哪些部分?
- java - 无法将数据发送到 mysql 以检索我的 api 中的列表列 [spring data + angular + mysql]
- android - 在单个活动应用程序中隐藏或使用自定义应用程序栏
- rest - 在 Rest API 服务器中使用重定向是错误的吗?
- node.js - 有没有办法使用 pm2 运行使用 nexe 创建的 nodejs 可执行文件?
- vba - 带有多个“And”的“If”条件没有得到预期的结果