gpt4 book ai didi

python - 如何将 R 数据框转换为指标值行

转载 作者:行者123 更新时间:2023-12-05 01:53:11 25 4
gpt4 key购买 nike

我有一个数据框

A 2
B 4
C 3

我想用以下内容制作一个数据框

A 0
A 1
B 0
B 0
B 0
B 1
C 0
C 0
C 1.

所以对于 B,我想制作 4 行,除了最后一行是 1 之外,每一行都是 0。同样,对于 A,我将有 2 行,第一行是 0,第二行是一个 1.

一般来说,如果我在原始表中有一行X n,我想在新表中返回n行,其中n-1行是X 0,最后一个为 X 1

有没有办法在 R 中做到这一点?还是 Python 或 SQL?

最佳答案

R 中,我们可以使用 uncount 从第二列复制行,并通过将第一列转换为逻辑列 (重复)

library(tidyr)
library(dplyr)
df1 %>%
uncount(v2) %>%
mutate(v2 = +(!duplicated(v1, fromLast = TRUE)))

-输出

 v1 v2
1 A 0
2 A 1
3 B 0
4 B 0
5 B 0
6 B 1
7 C 0
8 C 0
9 C 1

或者在Python

import pandas as pd
df1 = pd.DataFrame({"v1":["A", "B", "C"], "v2": [2, 4, 3]})
df2 = df1.reindex(df1.index.repeat(df1.v2))
df2['v2'] = (~df2.duplicated(subset = ['v2'], keep = "last")) + 0
df2
v1 v2
0 A 0
0 A 1
1 B 0
1 B 0
1 B 0
1 B 1
2 C 0
2 C 0
2 C 1

数据

df1 <- structure(list(v1 = c("A", "B", "C"), v2 = c(2L, 4L, 3L)), 
class = "data.frame", row.names = c(NA,
-3L))

关于python - 如何将 R 数据框转换为指标值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71165372/

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