改进以下代码,使拥有多个拥有人性质的企业在最后结果中仅保留第一个数据,其它内容不变 # 第二题 import pandas as pd # 读取原始数据 df = pd.read_excel('C:\\Users/19242/Desktop/stockdata.xlsx') # 将季度数据转换为年度数据 df['日期'] = pd.to_datetime(df['日期']) df['年份']=df['日期'].dt.year df['长期负债']=df['长期负债合计'] # 处理缺失值 df.fillna(df.mean(), inplace=True) df_grouped = df.groupby(['股票代码', '年份', '实际控制人性质', '行业代码']).mean().reset_index() df_grouped = df_grouped[['股票代码', '年份', '实际控制人性质', '行业代码', '短期负债', '长期负债', '资产负债率']] df_grouped = df_grouped.fillna(df_grouped.mean()) # 输出到新文件 df_grouped.to_excel('C:\\Users/19242/Desktop/python/2/a2.xlsx', index=False)
时间: 2023-09-02 18:15:01 浏览: 98
你可以使用 Pandas 的 drop_duplicates 方法完成该任务。只需要在最后的 df_grouped 上调用该方法即可。代码如下:
```python
import pandas as pd
# 读取原始数据
df = pd.read_excel('C:\\Users/19242/Desktop/stockdata.xlsx')
# 将季度数据转换为年度数据
df['日期'] = pd.to_datetime(df['日期'])
df['年份'] = df['日期'].dt.year
df['长期负债'] = df['长期负债合计']
# 处理缺失值
df.fillna(df.mean(), inplace=True)
df_grouped = df.groupby(['股票代码', '年份', '实际控制人性质', '行业代码']).mean().reset_index()
# 仅保留第一个数据
df_grouped.drop_duplicates(subset=['股票代码', '年份', '实际控制人性质'], keep='first', inplace=True)
df_grouped = df_grouped[['股票代码', '年份', '实际控制人性质', '行业代码', '短期负债', '长期负债', '资产负债率']]
df_grouped = df_grouped.fillna(df_grouped.mean())
# 输出到新文件
df_grouped.to_excel('C:\\Users/19242/Desktop/python/2/a2.xlsx', index=False)
```
这样,对于每个具有多个实际控制人性质的企业,仅保留第一个数据,并保留其它内容不变。
阅读全文