我一直试图创建一个脚本来清理一些数据,但遇到了问题,无法找到信息。我也可能在寻找错误的东西。
我有一个CSV,其中包含大量列和行的数据。我正在尝试将行合并在一起。每个"Repeat_Instance"应该只有一行,而空的"Repeat_Instance"行需要在另一行中。除了ID的第一行需要复制到具有相同ID的后续行之外,我主要通过使用pandasgroupby
命令来实现它。
以下是数据帧/表的一个简短示例:
Record_ID | Repeat_Name | 重复实例 | 数据输入第一重复实例数据_检查_当前 | >数据_评估|||
---|---|---|---|---|---|---|
1 | ||||||
1 | check_current | 1 | B | |||
1 | check_current | 2 | C||||
1 | 评估 | |||||
2 | Z | |||||
2 | check_current | 1Y | ||||
2 | 评估 | 1 | X | |||
评估 |
您可以使用前向填充函数ffill
将第一行中的DataInFirstRepeatName
信息传播给其他信息。完成此操作后,只需删除每组中的第一行(可以使用例如合适列上的dropna
来完成(。
df['DataInFirstRepeatName'] = df.groupby('Record_ID')['DataInFirstRepeatName'].ffill()
df = df.dropna(subset=['Repeat_Name'])
然后应用其他行合并逻辑(此处为first
(:
df.groupby(['Record_ID', 'Repeat_Instance']).first().reset_index()
结果:
Record_ID Repeat_Instance Repeat_Name DataInFirstRepeatName Data_In_check_current Data_In_Assessment
0 1 1.0 check_current A B D
1 1 2.0 check_current A C None
2 2 1.0 check_current Z Y X
3 2 2.0 assessment Z None V