好友
阅读权限 10
听众
最后登录 1970-1-1
25 吾爱币
请教大佬、师兄、师姐
为啥我用groupby输出的数据和源数据对不上哦?
差十万八千里
附件很小,才几KB,论坛上传不了,只能传百度网盘,请大神帮忙指点指点,多谢!!
链接:https://pan.baidu.com/s/1PoTUfCYaLT2rpem5zuLGGg
提取码:rvb1
import numpy as np
import pandas as pd
import os
# 遍历数据文件夹中所有文件的文件名,得到清单列表file_list
file_list = []
for root, dirs, files in os.walk("E:/GP数据分析/123/"): # 填写数据文件夹的路径
if files:
for f in files:
if ".csv" in f:
file_list.append(f.split(".csv")[0])
# 根据上一步得到的文件名列表,遍历所有文件,放入output变量中
output = pd.DataFrame()
# 遍历每个文件
for f in file_list:
code = f.split()[-1].split() # 读取日期代码
print(code)
# 读取数据
stock_data = pd.read_csv('E:/GP数据分析/123/' + f + '.csv', parse_dates=[0])
# 计算并输入到New文件
l = len(output)
output.loc[l, '日期'] = code # 将遍历的文件名输出到新文件”日期“列;
output.loc[l, '数量'] = stock_data['quantity'].sum()
# date = stock_data.groupby('quantity')['category'].sum() # 按照类型分类,并求分类后数量和
output.loc[l, '分类0'] = stock_data.groupby('category')['quantity'].apply(
lambda i: i.iloc[0] if len(i) > 1 else np.nan).sum()
output.loc[l, '分类1'] = stock_data.groupby('category')['quantity'].apply(
lambda i: i.iloc[1] if len(i) > 1 else np.nan).sum()
output.loc[l, '分类2'] = stock_data.groupby('category')['quantity'].apply(
lambda i: i.iloc[2] if len(i) > 1 else np.nan).sum()
# 输出每个文件的计算结果到新文件中
output.to_csv('E:/GP数据分析/NEW.csv', index=False, encoding='gbk')
print(output)
最佳答案
查看完整内容
最后分类的那三行代码替换为这个
如果只需要其中某一类,就按下面的方式按需开关代码吧
[mw_shl_code=python,true]output.loc[l, '分类0'] = stock_data.groupby('category')['quantity'].apply(sum)[0]
output.loc[l, '分类1'] = stock_data.groupby('category')[' ...
免费评分
查看全部评分
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。