刚学python,遇到个这样的问题:把下面的表格数据进行分组,根据左边 历史风暴_编号,编号相同的分为一组。第1~8行分为一组,第9~15行分为一组,第16~22分为一组。利用pandas读取,Num为所有编号,Lon为所有经度,Lat为所有纬度。
df=pd.read_excel(filename,sheet_name='Sheet1')
Num = df['历史风暴_编号']
Lon = df['历史风暴_经度(°)']
Lat = df['历史风暴_纬度(°)']
df=pd.read_excel(filename,sheet_name='Sheet1')
Num = df['历史风暴_编号']
Lon = df['历史风暴_经度(°)']
Lat = df['历史风暴_纬度(°)']
你的需求应该是对数据做一定处理,接着根据num,获取经度纬度。如果是分组,那么一定涉及到统计(按编号分组后求经度纬度的最大值,最小值,平均值)
你的需求显然不是获取min,max,count,mean这些的,因此只需要排序后做条件索引就可以了,不一定要分组。
我的代码:
import pandas as pd
if __name__ == '__main__':
# 读取excel数据
df = pd.read_excel('F:\position.xlsx')# 你的excel地址
# 排序
df2 = df.sort_values(by=['编号'], ascending=False)
# 获取所有索引
all_index = df.pivot_table(index=['编号']).index
# 遍历每一编号
for index in all_index:
# 条件索引获取分组数据
print('编号%s的数据为:' % index)
print(df2[df2['编号']==index])
运行结果:
您的采纳就是对我最大的动力,谢谢!!!