这是一个较大数据框的示例。我有一个分组为4的数据框
gr = df.groupby(np.arange(len(df.index))//4)
我正在尝试将每组4中的唯一字母的字母数放入新的名为Count的列中。
我尝试了几件事,但仍然无法将其整理成最终形式。任何帮助将不胜感激。我已经尝试过df.duplicate,value_count,但是 它的形式不会按要求出现。有任何想法吗?也许是一个value_count,然后将字母映射到正确的位置?
我也想避免for循环。我正在寻找更多的熊猫数据框技巧,或者可能有用的lambda x函数。
import pandas as pd
import numpy as np
data= [['X',1000],
['X',60],
['X',60],
['Y',40],
['X',60],
['Z',30],
['X',60],
['Z',30],
['X',60],
['Z',30],
['Y',40],
['S',25]]
df = pd.DataFrame(data,columns=['Letter','Cost'])
#groupby4s
gr = df.groupby(np.arange(len(df.index))//4)
我正在寻找的表格:
Letter Cost Count
0 X 60 3
1 X 60 3
2 X 60 3
3 Y 40 1
4 X 60 2
5 Z 30 2
6 X 60 2
7 Z 30 2
8 X 60 1
9 Z 30 1
10 Y 40 1
11 S 25 1
答案 0 :(得分:1)
尝试将groupby
与transform
和count
结合使用:
df['Count'] = df.groupby([np.arange(len(df.index))//4, df['Letter']])['Letter']\
.transform('count')
输出:
Letter Cost Count
0 X 1000 3
1 X 60 3
2 X 60 3
3 Y 40 1
4 X 60 2
5 Z 30 2
6 X 60 2
7 Z 30 2
8 X 60 1
9 Z 30 1
10 Y 40 1
11 S 25 1