回复“书籍”即可获赠Python从入门到进阶共10本电子书
大家好,我是皮皮。
前几天在Python白银交流群【凡人不烦人】问了一道Python处理的问题,如下图所示。
原始数据如下:
num = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0]
data = ['201825301001', '201825301002', '201825301004', '201825301005', '201825301006', '201825301007', '201825301008', '201825301009', '201825301010', '201825301011', '201825301012', '201825301013', '201825301014', '201825301015', '201825301016', '201825301017', '201825301018', '201825301019', '201825305001', '201825305002']
这里【猫药师Kelly】给出一个思路,大家后面遇到了,可以对应的修改下,事半功倍,【dcpeng】基于这个思路,给出了一份代码如下所示:
import pandas as pd
df = pd.read_excel('1.xlsx', names=['num', 'date'])
df = df.groupby("num").agg(list)
res = df.to_dict()["date"]
print(res)
运行之后,结果就是想要的了。完美的解决了粉丝的问题!
后来【瑜亮老师】也给了一份代码,如下所示:
num=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0]
num=[int(i) for i in num]
data=['201825301001', '201825301002', '201825301004', '201825301005', '201825301006', '201825301007', '201825301008', '201825301009', '201825301010', '201825301011', '201825301012', '201825301013', '201825301014', '201825301015', '201825301016', '201825301017', '201825301018', '201825301019', '201825305001', '201825305002']
result={}
for k,v in zip(num,data):
if k in result.keys():
result.get(k).append(v)
else:
result[k]=[v]
print(result)
运行之后,结果如下图所示:
后来【月神】也给了一个方法,如下所示:
from itertools import groupby
num=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0]
data=['201825301001', '201825301002', '201825301004', '201825301005', '201825301006', '201825301007', '201825301008', '201825301009', '201825301010', '201825301011', '201825301012', '201825301013', '201825301014', '201825301015', '201825301016', '201825301017', '201825301018', '201825301019', '201825305001', '201825305002']
result = {k: [i[1] for i in v] for k, v in groupby(zip(num, data), key=lambda x: int(x[0]))}
print(result)
运行之后,结果如下图所示:
后来【瑜亮老师】又补充了一个方法,代码如下所示:
from itertools import groupby
num=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0]
data=['201825301001', '201825301002', '201825301004', '201825301005', '201825301006', '201825301007', '201825301008', '201825301009', '201825301010', '201825301011', '201825301012', '201825301013', '201825301014', '201825301015', '201825301016', '201825301017', '201825301018', '201825301019', '201825305001', '201825305002']
result={}
for k,v in zip(num,data):
result[k]=result.get(k,[])+[v]
result={int(k):result.get(k,[])+[v] for k,v in zip(num,data)}
print(result)
运行之后,结果如下图所示:
这里【瑜亮老师】还给了一份代码,如下所示:
num=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0]
data=['201825301001', '201825301002', '201825301004', '201825301005', '201825301006', '201825301007', '201825301008', '201825301009', '201825301010', '201825301011', '201825301012', '201825301013', '201825301014', '201825301015', '201825301016', '201825301017', '201825301018', '201825301019', '201825305001', '201825305002']
df = pd.DataFrame({'num': num, 'data': data})
df = df.groupby("num").agg(list)
res = df.to_dict()["data"]
print(res)
简直太强了!运行之后,结果如下图所示:
每日汲取【月神】、【瑜亮老师】、【猫药师】、【甯同学】等大佬普及知识,太强了!
大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据处理的问题,文中针对该问题给出了具体的解析和代码实现,一共5个方法,帮助粉丝顺利解决了问题。
最后感谢粉丝【凡人不烦人】提问,感谢【瑜亮老师】、【猫药师】、【月神】、【dcpeng】给出的思路和代码解析,感谢【庄大】、【冯诚】、【Guang】、【甯同学】、【꯭】、【Flipped】等人参与学习交流。还
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------
往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
原文作者:Python爬虫与数据挖掘;如有侵权,请联系管理员删除。