我有下一张table。
我需要转换这个输入,你可以在下面的输出示例中看到:
import pandas as pd
# Define the input data
data = {
'ID': [500, 500, 500, 500, 500, 500, 500, 500, 400, 400, 400, 400, 400, 300, 200],
'item': ['A', 'B', 'C', 'D', 'E', 'A', 'B', 'C', 'A', 'B', 'A', 'C', 'E', 'D', 'E'],
'Counter': [1, 2, 3, 4, 5, 1, 2, 3, 1, 2, 1, 2, 1, 1, 1],
'C': ['XX', 'XX', 'XX', 'XX', 'XX', 'YY', 'YY', 'YY', 'XX', 'XX', 'YY', 'YY', 'YY', 'XX', 'XX']
}
# Convert the input data to a Pandas DataFrame
df = pd.DataFrame(data)
如果你有任何想法请分享。非常感谢!
3条答案
按热度按时间x6yk4ghg1#
您的I/O不匹配,但(* 基于您的输入屏幕截图 *),您可以尝试以下操作:
输出:
f4t66c6m2#
在块开始条件上使用
cumsum
来标识块,然后使用groupby
和agg
:输出:
ddhy6vgd3#
你只需要按ID和“C”列分组,并使用其他答案中的
eq(1).cumsum()
。它巧妙地帮助创建公共组,因为计数器的任何值1都会创建一个新组。然后通过用连字符分隔符连接它们来聚合字符串。然后,重置索引,使其福尔斯到一个平面数据框,并根据ID进行排序以匹配您的输出。产出
然后