【发布时间】:2022-06-30 22:03:50
【问题描述】:
我有来自不同来源的测量数据,我想将其转换为 DataFrame。但是,这两个来源的值并不相同:
data_in = [
[1.1, 'A', 1,2,3],
[1.2, 'B', 10,20,30,40],
[2.1, 'A', 1.1,2.1,3.1],
[2.1, 'B', 11,21,31,41],
[3.1, 'A', 1.2,2.2,3.2],
[3.2, 'B', 12,22,32,42],
]
pd.DataFrame(data_in)
相反,生成的 DataFrame 应该如下所示:
data_out = [
[1.1, 'A', 1,2,3],
[1.2, 'B', np.NaN,np.NaN,np.NaN,10,20,30,40],
[2.1, 'A', 1.1,2.1,3.1],
[2.1, 'B', np.NaN,np.NaN,np.NaN,11,21,31,41],
[3.1, 'A', 1.2,2.2,3.2],
[3.2, 'B', np.NaN,np.NaN,np.NaN,12,22,32,42],
]
pd.DataFrame(data_out, columns=['timestamp', 'source', 'val1', 'val2', 'val2', 'par1', 'par2', 'par3', 'par4'])
当然,我可以遍历数据并手动将每一行排序到一个专用的 DataFrame 中,然后将它们合并,但我想知道是否有更有效或至少“更好”的方法来使用 pandas 来做到这一点。
谢谢。
【问题讨论】:
-
您是否只是在连续的每个“B”之后插入三个 np.NaN?还有其他触发因素吗?