最近遇到这样一个问题,
如何使用pandas 实现将数值按照前几位是否相同来聚合。(如将某字段前四位相同的,某字段分别求和)
那么,首先准备一组示例数据
import pandas as pd
df = pd.DataFrame({
"party_id": [1101910000, 1101910000, 1101910000, 6523930000, 6523930000, 6523930000],
"value": [1, 3, 5, 2, 1, 3]}
)
print(df)
需求示例:对字段party_id的前四位数相同的数据,分别对其字段value进行求和。
思路:
- 首先要把字段party_id转换为字符串格式。这个使用DataFrame的astype()方法即可实现。
- 然后,使用.str.slice()方法进行按长度切片。
- 切片后使用groupy()方法聚合,再用sum()求和即实现了我们的需求。
df1 = df.astype({
"party_id":str})
df1['party_id'] = df1['party_id'].str.slice(0,4)
print(df1.groupby("party_id").sum())
如果您有更好的思路,欢迎在评论区一起分享!