python - 使用 python pandas 对值的数量进行操作
问题描述
我有 2 个数据框“交易”和“偏移”
偏移量:
Contact Account Name
0 TODD HOWARD
1 TODD HOWARD
2 JEFF COX
3 JEFF COX
4 TODD HOWARD
5 JEFF COX
6 MIKE BALDWIN
交易:
Contact Account Name
0 TODD HOWARD
1 TODD HOWARD
2 JEFF COX
3 JEFF COX
4 TODD HOWARD
5 JEFF COX
6 TODD HOWARD
7 MIKE BALDWIN
8 MIKE BALDWIN
9 JEFF COX
10 JC WHITE
它想要做什么:1)是计算每个唯一值。为此,我使用了:
df1 = offsets.groupby('Contact Account Name').size()
df2 = transactions.groupby('Contact Account Name').size()
我有
df1:
Contact Account Name
TODD HOWARD 3
JEFF COX 3
MIKE BALDWIN 1
df2:
Contact Account Name
JC WHITE 1
TODD HOWARD 4
JEFF COX 4
MIKE BALDWIN 2
2)我想合并两个数据框。我试过merge
了,但没有用。
3)我想创建另一个数据框并计算总交易中偏移量的百分比。
最后我想看到什么结果:
Contact Account Name Offset Percentage
TODD HOWARD 75
JEFF COX 75
MIKE BALDWIN 50
JC WHITE 100
提前致谢!
解决方案
聚合的输出是Series
,因此可以div
用多个 bymul
和 last进行除法reset_index
:
df = df1.div(df2, fill_value=1).mul(100).reset_index(name='Offset Percentage')
print (df)
Contact Account Name Offset Percentage
0 JC WHITE 100.0
1 JEFF COX 75.0
2 MIKE BALDWIN 50.0
3 TODD HOWARD 75.0
类似的解决方案value_counts
:
df1 = offsets['Contact Account Name'].value_counts()
df2 = transactions['Contact Account Name'].value_counts()
df = (df1.div(df2, fill_value=1)
.mul(100)
.rename_axis('Contact Account Name')
.reset_index(name='Offset Percentage'))
print (df)
Contact Account Name Offset Percentage
0 JC WHITE 100.0
1 JEFF COX 75.0
2 MIKE BALDWIN 50.0
3 TODD HOWARD 75.0
如果需要将两个系列一起加入,请致电concat
:
df = pd.concat([df2, df1], axis=1, keys=('Offset Percentage','b'))
df['Offset Percentage'] = df.b.div(df['Offset Percentage'], fill_value=1).mul(100)
df = df.drop('b', 1).rename_axis('Contact Account Name').reset_index()
print (df)
Contact Account Name Offset Percentage
0 JC WHITE 100.0
1 JEFF COX 75.0
2 MIKE BALDWIN 50.0
3 TODD HOWARD 75.0
推荐阅读
- javascript - 将 JSON 文件的内容加载到 JS 变量中
- javascript - gapi.auth2.getAuthInstance().currentUser.get().grant() 的结果是什么
- vue.js - 如何使用 vuejs 数据属性作为 html 属性
- python - Django - 根据前端用户提供的信息进行查询。并非每次都会使用所有过滤器。如何做到这一点?
- reactjs - React 中的 useCallback 似乎不允许我更新父级中的状态
- python - 显示在文件python中创建的数字总数的程序
- c - 在c程序中打印单词的每个字符
- spring - 使用 StreamingResponseBody 通过 Spring Boot 流式传输数据的 Java 客户端
- sql - 在 BigQuery 中拆分字符串并转换为整数
- javascript - 时区之间的转换似乎仍然使用机器的时区