我有一个如下形式的数据帧:
测向
ID col_1 col_2 col_3 Date
1 20 40 1/1/2018
1 10 1/2/2018
1 50 60 1/3/2018
3 40 10 90 1/1/2018
4 80 80 1/1/2018
问题是,我需要创建一个新的dataframe,其中包含每列的第一个有效值,但也包含从“Date”派生的其他列,这些列对应于这些值在原始dataframe中匹配的时间。你知道吗
换句话说:
新数据框
ID first_col_1 Date_col_1 first_col_2 Date_col_2 first_col_3 Date_col_3
1 10 1/2/2018 20 1/1/2018 40 1/1/2018
3 40 1/1/2018 10 1/1/2018 90 1/1/2018
4 1/1/2018 80 1/1/2018 80 1/1/2018
我知道获取每个ID的每个列的第一个有效值非常简单
df.groupby('ID').first()
但是我如何为每一列提取相关的“日期”信息呢?你知道吗
你不需要循环,但是你需要在你的组之前通过操作“融化”你的数据帧。你知道吗
因此,首先:
然后您可以:
这给了你:
这些列是多级的,所以如果您需要,我们可以对它们进行一些修饰:
这给了你一些列顺序和你的例子不太一样的东西,但是我觉得它很接近。你知道吗
我认为您必须在列上循环,并在连接之前提取每个列的第一个值。我找不到更简单的方法了。你知道吗
IIUC在
groupby
之前使用melt
相关问题 更多 >
编程相关推荐