这是一个更大的数据帧的示例。我有一个4组的数据帧
gr = df.groupby(np.arange(len(df.index))//4)
我试图将每个4组中唯一字母的字母计数到一个名为Count的新列中。
我已经尝试了几件事,但仍然无法将其变成最终形式。任何帮助将是欣赏。我已经尝试过df.duplicate,value_count,但它的形式不会按照需要出现。有任何想法吗?也许是value_count然后将字母映射到正确的位置?
我也想避免循环。我正在寻找更多的pandas数据帧技巧或者可能有效的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
尝试使用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