我有一个这样的数据框:
IP_address
IP1
IP1
IP1
IP4
IP4
IP4
IP4
IP4
IP7
IP7
IP7
Run Code Online (Sandbox Code Playgroud)
我想在此列中计算唯一值,并将计数作为变量添加.最后,它应该是这样的:
IP_address IP_address_Count
IP1 3
IP1 3
IP1 3
IP4 5
IP4 5
IP4 5
IP4 5
IP4 5
IP7 3
IP7 3
IP7 3
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码获取列的唯一值:
unique_ip_address_count = (df_c_train.drop_duplicates().IP_address.value_counts()).to_dict()
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何在python循环中匹配这些,以便我可以在python中获得所需的结果.非常感谢任何形式的帮助.
我无法在stackoverflow中找到相应的答案.如果有什么请指导我.谢谢.
Vai*_*ali 10
您可以将value_counts()与map结合使用
df['count'] = df['IP_address'].map(df['IP_address'].value_counts())
IP_address count
0 IP1 3
1 IP1 3
2 IP1 3
3 IP4 5
4 IP4 5
5 IP4 5
6 IP4 5
7 IP4 5
8 IP7 3
9 IP7 3
10 IP7 3
Run Code Online (Sandbox Code Playgroud)
使用pd.factorize
这应该是一个非常快速的解决方案,可以很好地扩展大数据
f, u = pd.factorize(df.IP_address.values)
df.assign(IP_address_Count=np.bincount(f)[f])
IP_address IP_address_Count
0 IP1 3
1 IP1 3
2 IP1 3
3 IP4 5
4 IP4 5
5 IP4 5
6 IP4 5
7 IP4 5
8 IP7 3
9 IP7 3
10 IP7 3
Run Code Online (Sandbox Code Playgroud)
NumPy方式 -
tags, C = np.unique(df.IP_address, return_counts=1, return_inverse=1)[1:]
df['IP_address_Count'] = C[tags]
Run Code Online (Sandbox Code Playgroud)
样品输出 -
In [275]: df
Out[275]:
IP_address IP_address_Count
0 IP1 3
1 IP1 3
2 IP1 3
3 IP4 5
4 IP4 5
5 IP4 5
6 IP4 5
7 IP4 5
8 IP7 3
9 IP7 3
10 IP7 3
Run Code Online (Sandbox Code Playgroud)
In [75]: df['IP_address_Count'] = df.groupby('IP_address')['IP_address'].transform('size')
In [76]: df
Out[76]:
IP_address IP_address_Count
0 IP1 3
1 IP1 3
2 IP1 3
3 IP4 5
4 IP4 5
5 IP4 5
6 IP4 5
7 IP4 5
8 IP7 3
9 IP7 3
10 IP7 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |