Pandas 根据python中的集合数将单行拆分为多行
我试图将一个包含15个变量的记录拆分为5个记录集,第一个记录包含3个变量数据,其余12个变量为空值,第二个记录包含6个变量,其余9个变量为空值,第三个记录包含9个变量,其余6个变量为空值 每个记录都有相同的类变量 我正试图找出一个python程序来在大约149个记录数据集上实现这一点 有人能帮忙吗 谢谢,Pandas 根据python中的集合数将单行拆分为多行,pandas,numpy,csv,Pandas,Numpy,Csv,我试图将一个包含15个变量的记录拆分为5个记录集,第一个记录包含3个变量数据,其余12个变量为空值,第二个记录包含6个变量,其余9个变量为空值,第三个记录包含9个变量,其余6个变量为空值 每个记录都有相同的类变量 我正试图找出一个python程序来在大约149个记录数据集上实现这一点 有人能帮忙吗 谢谢, N您可以使用广播来屏蔽-这意味着将由np.arange创建的数组按索引长度与由列长度除以整数除以3创建的数组进行三元组比较: np.random.seed(2020) df = (pd.Da
N您可以使用广播来屏蔽-这意味着将由
np.arange
创建的数组按索引长度与由列长度除以整数除以3
创建的数组进行三元组比较:
np.random.seed(2020)
df = (pd.DataFrame(np.random.rand(4, 15))
.rename(columns=lambda x: f'V{x+1}')
.assign(Class = [0,1,1,0]))
print (df)
V1 V2 V3 V4 ... V13 V14 V15 Class
0 0.986277 0.873392 0.509746 0.271836 ... 0.736325 0.355663 0.341093 0
1 0.666803 0.217101 0.561427 0.124179 ... 0.456119 0.155851 0.476049 1
2 0.169702 0.896258 0.373394 0.379693 ... 0.763921 0.919691 0.070573 1
3 0.156165 0.636894 0.555696 0.191929 ... 0.936032 0.803028 0.697305 0
[4 rows x 16 columns]
请与预期输出共享一个输入示例,以便更好地理解。@MayankPorwal。。为了更好地理解而添加的图像欣赏您的答案,但似乎您的代码只适用于单个记录。我想把这个概念应用到df的每条记录上,每条记录包含149条独特的记录,每个记录包含3组数据spliting@Naseer-你现在能测试吗
N
是按列数进行必要更改的。看起来它正在按预期工作。谢谢耶斯雷尔的帮助。我已经使用了很多for循环,其中包含中断和混乱的代码。再次感谢@纳塞尔-当然,好主意。我尝试创建最通用的解决方案,因此添加N
-只有必要的N可以被3
整除,比如3,9,15,99,150
。)你能建议我在哪里修改代码以分配不同变量编号的集合。比如第一个集合包含3个,第二个集合包含5个,第三个集合包含4个,第四个集合包含3个?
N = 15
new_rows = N // 3
df1 = df.iloc[:, :N]
mask = np.arange(new_rows)[:, None] >= np.arange(len(df1.columns)) // 3
repeated = np.tile(df1.to_numpy(), new_rows).reshape(new_rows * len(df.index), -1)
mask = np.tile(mask, (len(df1.index), 1))
arr = np.where(mask, repeated, np.nan)
df1 = (pd.DataFrame(arr, columns=df.columns[:N])
.assign(Class = np.repeat(df['Class'].to_numpy(), new_rows)))
print (df1)
V1 V2 V3 V4 ... V13 V14 V15 Class
0 0.986277 0.873392 0.509746 NaN ... NaN NaN NaN 0
1 0.986277 0.873392 0.509746 0.271836 ... NaN NaN NaN 0
2 0.986277 0.873392 0.509746 0.271836 ... NaN NaN NaN 0
3 0.986277 0.873392 0.509746 0.271836 ... NaN NaN NaN 0
4 0.986277 0.873392 0.509746 0.271836 ... 0.736325 0.355663 0.341093 0
5 0.666803 0.217101 0.561427 NaN ... NaN NaN NaN 1
6 0.666803 0.217101 0.561427 0.124179 ... NaN NaN NaN 1
7 0.666803 0.217101 0.561427 0.124179 ... NaN NaN NaN 1
8 0.666803 0.217101 0.561427 0.124179 ... NaN NaN NaN 1
9 0.666803 0.217101 0.561427 0.124179 ... 0.456119 0.155851 0.476049 1
10 0.169702 0.896258 0.373394 NaN ... NaN NaN NaN 1
11 0.169702 0.896258 0.373394 0.379693 ... NaN NaN NaN 1
12 0.169702 0.896258 0.373394 0.379693 ... NaN NaN NaN 1
13 0.169702 0.896258 0.373394 0.379693 ... NaN NaN NaN 1
14 0.169702 0.896258 0.373394 0.379693 ... 0.763921 0.919691 0.070573 1
15 0.156165 0.636894 0.555696 NaN ... NaN NaN NaN 0
16 0.156165 0.636894 0.555696 0.191929 ... NaN NaN NaN 0
17 0.156165 0.636894 0.555696 0.191929 ... NaN NaN NaN 0
18 0.156165 0.636894 0.555696 0.191929 ... NaN NaN NaN 0
19 0.156165 0.636894 0.555696 0.191929 ... 0.936032 0.803028 0.697305 0
[20 rows x 16 columns]