gpt4 book ai didi

python - Pandas 结合两个数据框将列的子集附加到输出表的行

转载 作者:行者123 更新时间:2023-12-04 00:49:43 24 4
gpt4 key购买 nike

我想合并两个数据框并在输出数据框中创建列行的子集。两表如下


表格堆栈

stk = pd.DataFrame({'code':['A121','H812','Z198'],'01-05-2021':[4,2,6],'02-05-2021':[1,3,2],'03-05-2021':[12,13,12]})

上 table

sup = pd.DataFrame({'code':['A121','H812','S222'],'01-05-2021':[2,2,2],'03-05-2021':[5,5,5],'06-05-2021':[1,4,7]})

输出表


关于如何创建输出表的简要说明:

  1. 输出表需要有 stk 表和 sup 表中所有日期列的并集
  2. 输出表还需要有 2 行用于合并两个表中的每个代码
  3. 需要在输出表的适当单元格中分配每个表中关于代码和日期的相应值
  4. 如果值不存在,在输出表中将其标记为np.nan

我希望这是清楚的。对此有任何建议或帮助,我们将不胜感激。我尝试在两个表上使用合并和外部联接,但这会创建额外的日期列。我不确定如何从中创建行。

最佳答案

向每个数据框添加新列 "code" 并将它们连接起来。显然,Z198, supS222, stk 的行将丢失。解决方案是 .reindex 使用代码和模式值的乘积的最终数据帧。 .reindex 函数会自动将 NaN 添加到缺失的行中。

idx = pd.MultiIndex.from_product(
[set(stk["code"].tolist() + sup["code"].tolist()), ["stk", "sup"]],
names=["code", "mode"],
)
x = (
pd.concat([stk.assign(mode="stk"), sup.assign(mode="sup")])
.set_index(["code", "mode"])
.reindex(idx)
.reset_index()
)
print(x)

打印:

   code mode  01-05-2021  02-05-2021  03-05-2021  06-05-2021
0 Z198 stk 6.0 2.0 12.0 NaN
1 Z198 sup NaN NaN NaN NaN
2 H812 stk 2.0 3.0 13.0 NaN
3 H812 sup 2.0 NaN 5.0 4.0
4 A121 stk 4.0 1.0 12.0 NaN
5 A121 sup 2.0 NaN 5.0 1.0
6 S222 stk NaN NaN NaN NaN
7 S222 sup 2.0 NaN 5.0 7.0

关于python - Pandas 结合两个数据框将列的子集附加到输出表的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67433347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com