我需要ID
在每个domain
数据中计算唯一值
ID, domain
123, 'vk.com'
123, 'vk.com'
123, 'twitter.com'
456, 'vk.com'
456, 'facebook.com'
456, 'vk.com'
456, 'google.com'
789, 'twitter.com'
789, 'vk.com'
Run Code Online (Sandbox Code Playgroud)
我尝试df.groupby(['domain', 'ID']).count()
但我想得到
domain, count
vk.com 3
twitter.com 2
facebook.com 1
google.com 1
Run Code Online (Sandbox Code Playgroud) 我有一个pandas数据框并将其分为两列(例如col1
和col2
).为固定值col1
和col2
(即,对于A组)我可以在几个不同的值col3
.我想计算第三列中不同值的数量.
例如,如果我将此作为输入:
1 1 1
1 1 1
1 1 2
1 2 3
1 2 3
1 2 3
2 1 1
2 1 2
2 1 3
2 2 3
2 2 3
2 2 3
Run Code Online (Sandbox Code Playgroud)
我想将此表(数据框)作为输出:
1 1 2
1 2 1
2 1 3
2 2 1
Run Code Online (Sandbox Code Playgroud) 我有以下形式的数据:
df = pd.DataFrame({
'group': [1, 1, 2, 3, 3, 3, 4],
'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
print(df)
# group param
# 0 1 a
# 1 1 a
# 2 2 b
# 3 3 NaN
# 4 3 a
# 5 3 a
# 6 4 NaN
Run Code Online (Sandbox Code Playgroud)
组内的非空值始终相同.我想为每个组(它存在的位置)计算一次非空值,然后查找每个值的总计数.
我目前正在以下(笨重和低效)的方式做到这一点:
param = []
for _, group in df[df.param.notnull()].groupby('group'):
param.append(group.param.unique()[0])
print(pd.DataFrame({'param': param}).param.value_counts())
# a 2
# b 1
Run Code Online (Sandbox Code Playgroud)
我确信有一种方法可以更干净地完成这项工作并且不使用循环,但我似乎无法解决这个问题.任何帮助将非常感激.
我有一个如下所示的数据框:
Id ActivityId ActivityCode
1 2 3
1 2 4
1 3 2
Run Code Online (Sandbox Code Playgroud)
我需要计算与Id相关的不同活动ID.
在上面的示例中,id 1将返回2,因为该id有2个不同的活动ID.
SQL看起来像这样:
SELECT COUNT(DISTINCT ActivityId) FROM table GROUP BY Id
Run Code Online (Sandbox Code Playgroud)
我怎么在熊猫里这样做?
(如果可能的话,我想知道是否有办法在字典中获得结果,而无需手动迭代)