gpt4 book ai didi

python - 从 2 个相似的列创建合并列和索引列

转载 作者:行者123 更新时间:2023-11-30 22:02:31 26 4
gpt4 key购买 nike

我有一个如下所示的 DataFrame:{"Val1": [...], "Val2": [...]}我现在想要实现的是一个如下所示的 DataFrame:

{
"Vals": [<should contain all vals from Val1 and Val2>],
"type": [<1 or 2 depending on the column from which
the corresponding value originated>]
}

我可以通过以下方式生成:

new = DataFrame({"vals": old.vals1.values + old.vals2.values,
"type": ([1] * len(old)) + ([2] * len(old))})

但这感觉很老套,我想知道是否有一种使用 pandas 方法的优雅的单行代码。因为在我的实际问题中,表格多了 4 列,然后我的黑客解决方案变得相当密集。

编辑:一个具体的例子是:

old = pd.DataFrame({"A": [2, 4, 5], "B": [1, 2, 3], "C":[4, 5, 6]})
new = pd.DataFrame({"A": [2, 4, 5, 2, 4, 5], "B and C": [1, 2, 3, 4, 5, 6], "type": (["B"] * 3) + (["C"] * 3)})

old:

A B C
0 2 1 4
1 4 2 5
2 5 3 6

new:
A B and C type
0 2 1 B
1 4 2 B
2 5 3 B
3 2 4 C
4 4 5 C
5 5 6 C

最佳答案

假设你有:

df = pd.DataFrame({'val1':[1,2,3,4],'val2':[5,6,7,8]})

使用pd.melt()你会得到你想要的:

df.melt(var_name='Type', value_name='vals')
Type vals
0 val1 1
1 val1 2
2 val1 3
3 val1 4
4 val2 5
5 val2 6
6 val2 7
7 val2 8

关于python - 从 2 个相似的列创建合并列和索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53776756/

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