pandas 如何将一个嵌套框架分割成块,其中块的大小由另一列定义?

eqoofvh9  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(71)

我有以下数据:

data = {
    'A': ['car', 'car', 'car', 'car', 'truck', 'truck', 'truck'],
    'B': [2, 2, 2, 2, 1, 1, 1]
}

df = pd.DataFrame(data)

字符串
我需要按列A对它进行分组,并将其拆分为包含列B中指定的行数的块。例如,对于列B中的值2,每2行取一行并将其分配给同一组。预期结果是:

outcome = {
    'A': ['car', 'car', 'car', 'car', 'truck', 'truck', 'truck'],
    'B': [2, 2, 2, 2, 1, 1, 1],
    'C': [0, 0, 1, 1, 0, 1, 2]
}


其中列C是组编号。

imzjd6km

imzjd6km1#

您可以尝试:

df['C'] = df.groupby('A').cumcount().floordiv(df['B'])
print(df)

# Output
       A  B  C
0    car  2  0
1    car  2  0
2    car  2  1
3    car  2  1
4  truck  1  0
5  truck  1  1
6  truck  1  2

字符串
注:假设对于每个A,B是相同的。

相关问题