【问题标题】:Python: How do you keep all of your data when using .Value_counts()?Python:使用 .Value_counts() 时如何保留所有数据?
【发布时间】:2016-06-13 18:44:49
【问题描述】:

.Value_counts() 删除了我的其余数据。在不丢失其余信息的情况下分析我的数据?或者有没有我可以使用的另一个字计数器代码不会删除我的其余数据列?

这是我的代码:

from pandas import DataFrame, read_csv
import pandas as pd  
f1 = pd.read_csv('lastlogonuser.txt', sep='\t', encoding='latin1')
f2 = pd.read_csv('UserAccounts.csv', sep=',', encoding ='latin1')
f2 = f2.rename(columns={'Shortname':'User Name'})
f = pd.concat([f1, f2])
counts = f['User Name'].value_counts()
f = counts[counts == 1] 
f 

当我运行我的代码时,我得到了这样的东西:

sample534         1
sample987         1
sample342         1
sample321         1
sample123         1

我想要类似的东西:

   User Name    Description                    CN Account
1  sample534    Journal Mailbox managed by         
1  sample987    Journal Mailbox managed by    
1  sample342    Journal Mailbox managed by   
1  sample321    Journal Mailbox managed by 
1  sample123    Journal Mailbox managed by 

我正在使用的数据示例:

enter code here
Account User Name User CN                       Description
ENABLED MBJ29     CN=MBJ29,CN=Users             Journal Mailbox managed by  
ENABLED MBJ14     CN=MBJ14,CN=Users             Journal Mailbox managed by
ENABLED MBJ08     CN=MBJ30,CN=Users             Journal Mailbox managed by   
ENABLED MBJ07     CN=MBJ07,CN=Users             Journal Mailbox managed by 

【问题讨论】:

  • 我认为您的目标是获得一个包含多行唯一用户的 DataFrame,对吗?

标签: python python-3.x pandas


【解决方案1】:

您可以使用DataFrame.duplicated 来确定哪些行是重复的,然后使用loc 进行过滤:

f = f.loc[~f.duplicated(subset=['User Name'], keep=False), :]

subset 参数指定仅在 'User Name' 列中查找重复项。 keep=False 参数指定标记所有重复项。由于duplicated 返回True 重复,我用~ 否定它。

在具有大量重复项的相当大的 DataFrame 上进行测试时,这似乎比 groupby 更有效:

%timeit f.loc[~f.duplicated(subset=['User Name'], keep=False), :]
100 loops, best of 3: 17.4 ms per loop

%timeit f.groupby('User Name').filter(lambda x: len(x) == 1)
1 loop, best of 3: 6.78 s per loop

【讨论】:

    猜你喜欢
    • 2021-05-24
    • 2018-04-09
    • 1970-01-01
    • 2022-01-24
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多