【发布时间】:2018-01-22 12:13:58
【问题描述】:
我的数据有像
这样的数据id name model_# ms bp1 cd1 sf1 sa1 rq1 bp2 cd2 sf2 sa2 rq2 ...
1 John 23984 1 23 234 124 25 252 252 62 194 234 234 ...
2 John 23984 2 234 234 242 62 262 622 262 622 26 262 ...
适用于数百个模型,最长 10 毫秒,变量计数多达 21 个。
我通常使用 pd.melt 进行分析,我会查看 bp1:bp21 或其他内容。我目前需要创建一个熔体,在其中查看 bp1 值和 rq 1 值。
我希望有效地创建这样的东西:
id model_# ms variable_x value_x variable_y value_y
0 113 77515 1 bp1 23 rq1 252
1 113 77515 1 bp2 252 rq2 262
2 113 77515 1 bp3 26 rq3 311
目前我能做的最好的事情是:
id model_# ms variable_x value_x variable_y value_y
0 113 77515 1 bp1 23 rq1 252
1 113 77515 1 bp1 23 rq2 262
2 113 77515 1 bp1 23 rq3 311
3 113 77515 1 bp1 23 rq4 246
通过:
df = pd.melt(dat, id_vars=['id', 'mod_req', 'ms'], value_vars=bp)
df1 = pd.melt(dat, id_vars=['id', 'mod_req', 'ms'], value_vars=rq)
df2 = pd.merge(df,df1, on=['id', 'mod_req', 'ms'])
有没有一种简单的方法来合并子字符串,这样 bp1 将与 rq1 连接等等?这意味着采用仅查看 bp1:bp21 和其他已熔解数据帧 rq1:rq21 的已熔数据帧,并根据子字符串值(bp1 rq1,而不是 bp1 rq2)进行合并
【问题讨论】:
-
你的问题很令人困惑,你能用输入和来自该输入的预期输出创建一个更简单的案例吗?
-
你会原谅我的,但这是我能说的最简单的。我有很多分箱数据 bp1、bp2、bp3.... bp21,我已经将它们融合成一个带有融化的变量。我想对 rq1、rq2、rq3...rq21 做同样的事情,这样每一行都包含 bp1 rq1 value_x value_y。不是 bp1 rq2,因此我实际上想要合并两个融化的数据帧(rq 和 bp),但要沿着子字符串(1 到 1、2 到 2)。
-
那么,cd1、sf1 和 sa1 列对您的结果没有任何影响吗?
-
正确。这只是在将数据从其原始形式转换时必须考虑的一系列附加变量。
-
很抱歉,如果我使用的随机数的差异在这方面造成了混淆。没有值变化,只是行和列操作。