#DataFrame分组
哪位大神教教我,怎么把DataFrame 分成多个组?,要写崩溃了
D:\Python的期货量化交易实战\venv\Scripts\python.exe D:/python/大数据财务报告-五粮液/text.py
ST林重 ROE
20221231 0.0427
20211231 -0.7044
20201231 0.0207
20181231 NaN
Name: 3, dtype: object
ST皇台 ROE
20221231 0.0573
20211231 -0.1056
20201231 3.1401
20171231 NaN
Name: 3, dtype: object
万通液压 ROE
20221231 0.148
20201231 0.1896
20191231 0.1788
20181231 0.221
20171231 NaN
Name: 3, dtype: object
三一重工 ROE
20221231 0.0664
20211231 0.2001
20201231 0.3056
20191231 0.2953
20181231 0.2147
Name: 3, dtype: object
中国一重 ROE
20221231 0.0089
20211231 0.0149
20201231 0.0118
20191231 0.0117
20181231 0.0118
Name: 3, dtype: object
中联重科 ROE
20221231 0.0413
20211231 0.121
20201231 0.1701
20191231 0.1134
20181231 0.0533
Name: 3, dtype: object
冰轮环境 ROE
20221231 0.0878
20211231 0.0665
20201231 0.0549
20191231 0.1372
20181231 0.1016
Name: 3, dtype: object
南矿集团 ROE
20211231 NaN
Name: 3, dtype: object
厦工股份 ROE
20221231 0.1873
20211231 -0.0872
20201231 0.0279
20191231 -2.0209
20181231 -4.0512
Name: 3, dtype: object
唯万密封 ROE
20221231 0.0714
20211231 0.1711
20201231 0.2649
20191231 0.2709
20171231 NaN
Name: 3, dtype: object
国机重装 ROE
20221231 0.0307
20211231 0.0309
20201231 0.027
20191231 0.0417
20181231 0.0754
Name: 3, dtype: object
天地科技 ROE
20221231 0.0992
20211231 0.0875
20201231 0.0776
20191231 0.0674
20181231 0.0626
Name: 3, dtype: object
天奇股份 ROE
20221231 0.093
20211231 0.0752
20201231 0.0309
20191231 0.035
20181231 0.0681
Name: 3, dtype: object
天桥起重 ROE
20221231 0.0174
20211231 0.0267
20201231 0.0273
20191231 0.0386
20181231 0.0514
Name: 3, dtype: object
太原重工 ROE
20221231 0.0437
20211231 0.0351
20201231 0.0086
20191231 -0.217
20181231 0.0091
Name: 3, dtype: object
安徽合力 ROE
20221231 0.1437
20211231 0.1127
20201231 0.1406
20191231 0.1364
20181231 0.1279
Name: 3, dtype: object
山东矿机 ROE
20221231 0.0409
20211231 0.0222
20201231 0.0394
20191231 0.0747
20181231 0.0647
Name: 3, dtype: object
山推股份 ROE
20221231 0.1362
20211231 0.0531
20201231 0.0291
20191231 0.0167
20181231 0.0241
Name: 3, dtype: object
山河智能 ROE
20221231 -0.2261
20211231 0.0589
20201231 0.1099
20191231 0.1048
20181231 0.0965
Name: 3, dtype: object
岩石股份 ROE
20221231 0.0749
20211231 0.1563
20201231 0.0284
20191231 0.045
20181231 0.0671
Name: 3, dtype: object
建设机械 ROE
20221231 -0.0074
20211231 0.0629
20201231 0.1151
20191231 0.1409
20181231 0.0497
Name: 3, dtype: object
徐工机械 ROE
20221231 0.096
20211231 0.1601
20201231 0.1115
20191231 0.1144
20181231 0.0756
Name: 3, dtype: object
恒立液压 ROE
20221231 0.2147
20211231 0.3263
20201231 0.3495
20191231 0.2559
20181231 0.1994
Name: 3, dtype: object
拓山重工 ROE
20221231 0.1071
20211231 0.2916
20201231 0.4007
20191231 0.4551
20181231 NaN
Name: 3, dtype: object
振华重工 ROE
20221231 0.0247
20211231 0.0298
20201231 0.028
20191231 0.0335
20181231 0.0293
Name: 3, dtype: object
新柴股份 ROE
20221231 0.0207
20211231 0.0871
20201231 0.1325
20191231 0.0877
20181231 NaN
Name: 3, dtype: object
柳工 ROE
20221231 0.0385
20211231 0.0742
20201231 0.1221
20191231 0.1018
20181231 0.0843
Name: 3, dtype: object
汉钟精机 ROE
20221231 0.2273
20211231 0.1985
20201231 0.1676
20191231 0.1266
20181231 0.1119
Name: 3, dtype: object
法兰泰克 ROE
20221231 0.1486
20211231 0.1504
20201231 0.1421
20191231 0.1085
20181231 0.0774
Name: 3, dtype: object
洋河股份 ROE
20221231 0.2085
20211231 0.1854
20201231 0.1995
20191231 0.2105
20181231 0.257
Name: 3, dtype: object
海伦哲 ROE
20221231 0.0551
20211231 0.1074
20201231 -0.3363
20191231 0.028
20181231 0.0629
Name: 3, dtype: object
通裕重工 ROE
20221231 0.0367
20211231 0.0471
20201231 0.0701
20191231 0.0449
20181231 0.0425
Name: 3, dtype: object
鞍重股份 ROE
20221231 0.1125
20211231 -0.1313
20201231 0.0065
20191231 0.0142
20181231 0.0165
Name: 3, dtype: object
顺鑫农业 ROE
20221231 -0.0907
20211231 0.0132
20201231 0.0554
20191231 0.1069
20181231 0.1006
Name: 3, dtype: object
代码如下:
path=r"D:\python\大数据财务报告-五粮液\工业机械"
import pandas as pd
import os
import math
import tqdm
dfs=pd.DataFrame()
from openpyxl import *
from xlrd import open_workbook
for root_dir,sub_dir,files in os.walk(path):
for file in files:
if file.endswith(".xlsx"):
#构造绝对路径
file_name = os.path.join(root_dir, file)
str = file.split(".")
aa = str[0]
df=pd.read_excel(file_name,sheet_name="财务比率表",index_col=False)
df.columns = [aa] + df.columns[1:].tolist()
dd=pd.DataFrame(df).loc[3]
print(dd)
不知道你这个问题是否已经解决, 如果还没有解决的话:答案:
如果要按照公司名称对DataFrame进行分组,可以使用如下代码:
company_group = df.groupby('公司名称')
其中,'公司名称'是根据具体数据集中的列名进行修改。然后,可以对分组后的每个组进行各种操作,例如:
max_profit = company_group['利润'].max()
average_revenue = company_group['收入'].mean()
上述代码分别计算了每个公司的最大利润和平均收入。如果需要保持DataFrame对象,可以添加as_index=False:
company_group = df.groupby('公司名称', as_index=False)
如果要按照ROE值分组,可以先定义一个ROE分组函数,然后使用apply方法将其应用到每一条记录上,并将返回的结果作为新的一列添加到数据集中:
def roe_group(roe):
if roe < 0:
return '负ROE'
elif roe < 10:
return '0%-10%'
elif roe < 20:
return '10%-20%'
else:
return '20%以上'
df['ROE分组'] = df['ROE'].apply(roe_group)
roe_group = df.groupby('ROE分组')
上述代码定义了一个ROE分组函数,对于每条记录的ROE值,根据不同的范围返回不同的组别标签,例如-1%的ROE为负ROE,11%的ROE为10%-20%。然后,将该函数应用到每条记录上,并将返回的结果添加为新的一列ROE分组。最后,使用groupby将数据集按照ROE分组进行分组。
参考资料中还提供了一种将DataFrame转换成字典进行操作的方法,不过需要清楚分组键是什么才能调用并修改对应的字典值,此处不再详细赘述。
Python-pandas对excel筛选(分组)查询
希望对你有帮助