数据帧汇总的问题,求帮忙,谢谢
想把数据帧1汇总,变成数据帧2,求帮忙,谢谢df1
名称 日期 数量
0 主题混合 2022-08-26 10
1 中混合A 2021-09-28 85
2 2022-07-28 5
3 信国A 2022-12-23 33
4 夏混合 2022-04-29 5
5 2022-08-23 10
6 诺混合 2022-05-05 50
7 汇汽车 2022-05-12 15.8
8 2022-08-18 2.2
9 方达混 2022-12-23 4.8
10 前混合 2022-12-23 4.67
11 2022-12-27 3.32
df2
名称 数量
0 主题混合 10
1 中混合A 90
2 信国A 33
3 夏混合 15
4 诺混合 50
5 汇汽车 18.0
6 方达混 4.8
7 前混合 7.99
根据你的问题,我理解你想要对数据帧1(df1)进行汇总,将相同名称的行汇总并将数量相加,然后生成新的数据帧2(df2)。以下是使用Python和pandas库实现此操作的代码:
import pandas as pd
data = {'名称': ['主题混合', '中混合A', '', '信国A', '夏混合', '', '诺混合', '汇汽车', '', '方达混', '前混合', ''],
'日期': ['2022-08-26', '2021-09-28', '2022-07-28', '2022-12-23', '2022-04-29', '2022-08-23', '2022-05-05', '2022-05-12', '2022-08-18', '2022-12-23', '2022-12-23', '2022-12-27'],
'数量': }
df1 = pd.DataFrame(data)
# 使用groupby对名称进行分组并汇总数量
df2 = df1.groupby("名称")["数量"].sum().reset_index()
# 删除名称为空的行
df2 = df2 != ""]
# 重置索引
df2.reset_index(drop=True, inplace=True)
print(df2)
运行此代码后,你将得到如下数据帧(df2):
名称 数量
0 主题混合10.00
1 中混合A90.00
2 信国A33.00
3 夏混合15.00
4 诺混合50.00
5 汇汽车18.00
6 方达混 4.80
7 前混合 7.99
这样你就可以得到想要的汇总后的数据帧(df2)了。 本帖最后由 futui 于 2023-4-23 15:03 编辑
我运行的结果,怎么是这样
名称 日期 数量
0 主题混合2022-08-2610.00
1 中混合A2021-09-2885.00
2 2022-07-28 5.00
3 信国A2022-12-2333.00
4 夏混合2022-04-29 5.00
5 2022-08-2310.00
6 诺混合2022-05-0550.00
7 汇汽车2022-05-1215.80
8 2022-08-18 2.20
9 方达混2022-12-23 4.80
10 前混合2022-12-23 4.67
11 2022-12-27 3.32
##############
名称 数量
0中混合A85.00
1主题混合10.00
2 信国A33.00
3 前混合 4.67
4 夏混合 5.00
5 方达混 4.80
6 汇汽车15.80
7 诺混合50.00
似乎实际只删除 了空行 futui 发表于 2023-4-23 15:02
我运行的结果,怎么是这样
名称 日期 数量
0 主题混合2022-08-2610.00
不对呀,我执行没问题呀,你试试这个代码:
import pandas as pd
data = {'名称': ['主题混合', '中混合A', '', '信国A', '夏混合', '', '诺混合', '汇汽车', '', '方达混', '前混合', ''],
'日期': ['2022-08-26', '2021-09-28', '2022-07-28', '2022-12-23', '2022-04-29', '2022-08-23', '2022-05-05', '2022-05-12', '2022-08-18', '2022-12-23', '2022-12-23', '2022-12-27'],
'数量': }
df1 = pd.DataFrame(data)
# 使用前一个非空值填充名称列的空值
df1['名称'] = df1['名称'].replace('', method='ffill')
# 使用groupby对名称进行分组并汇总数量
df2 = df1.groupby("名称")["数量"].sum().reset_index()
# 重置索引
df2.reset_index(drop=True, inplace=True)
print(df2)
页:
[1]