如何在不使用for循环的情况下将大熊猫的列值相互转换为行值

时间:2019-10-17 06:15:12

标签: python pandas

我有一个大数据框,它由多个数据集本身(用“名称”区分)组成,这些数据集包含时间数据和一行中的两个浮点值。通常看起来像这样的输出:

df1 = pd.DataFrame([['name1','time1.1', 'x1', 'y1'], ['name1', 'time1.2', 'x2', 'y2'], ['name1', 'time1.3', 'x3', 'y3'], ['name2', 'time2.1', 'x4', 'y4'], ['name2', 'time2.2', 'x5', 'y5']], columns=['Name', 'Timestamp', 'Value X', 'Value Y'])

现在,我想创建/获取一个新的数据帧,在其中我交替(逐行)将一些函数f1和f2应用到时间戳数据,并从f列的x值和f2的y列获取值。最终数据帧将丢失一列,但行数将增加一倍。 它应该看起来像这样:

df2 = pd.DataFrame([['name1','f1(time1.1)', 'x1'], ['name1','f2(time1.1)', 'y1'], ['name1', 'f1(time1.2)', 'x2'], ['name1', 'f2(time1.2)', 'y2'], ['name1', 'f1(time1.3)', 'x3'], ['name1', 'f2(time1.3)', 'y3'], ['name2', 'f1(time2.1)', 'x4'], ['name2', 'f2(time2.1)', 'y4'], ['name2', 'f1(time2.2)', 'x5'], ['name2', 'f2(time2.2)', 'y5']], columns=['Name', 'Timestamp', 'Value'])

应保留订单。现在,我可以使用for循环轻松地做到这一点。但是,对于大量的行,这似乎效率很低(我要面对几百万行)。我想知道是否有更好的方法。 我们非常感谢您的帮助。

0 个答案:

没有答案