如何遍历单个数据帧列以计算有多少个不同的值?

时间:2019-01-29 12:20:02

标签: python pandas

我是python的新手,想知道我将如何遍历dates列中的所有值并计算其中总共有多少个不同的日期。

我知道可以通过使用.nunique()函数来执行此操作,但是我正在寻找如何使用For循环来执行此操作。

我的数据框只是一个表,其中有1列不同的日期。在我的实际数据中,我有500多个不同的行,因此我已将其缩减为仅10个。对于此示例,我希望结果为4。

date_tbl

Index    Date
0        07/08/2015
1        07/08/2015
2        07/08/2015
3        08/08/2015
4        08/08/2015
5        08/08/2015
6        08/08/2015
7        09/08/2015
8        09/08/2015
9        10/08/2015

谢谢您的任何帮助。

3 个答案:

答案 0 :(得分:0)

如果您真的想使用循环,那就是一种可能性:

unique_list = []
for i,r in date_tbl.iterrows():
    if r['Date'] not in unique_list:
        unique_list.append(r['Date'])

len(unique_list)

答案 1 :(得分:0)

您必须使用df.unique()。这就是使用熊猫的原因。您不应该在熊猫中穿行。

即使是对数据框内的数据进行操作,也应使用df.apply()。

这应该将唯一日期值的列表作为列表获取:

df.Date.unique()

如果要使用循环:

使用df.iterrows():

def findUniqueDates(df):
    unique_dates = []

    for index, row in df.iterrows():
        if row['Date'] not in unique_dates
        unique_date.append(row['Date'])
    return unique_dates

答案 2 :(得分:0)

您可以尝试以下操作,除非处理特定情况所需的时间非常长:

>>> df
         Date
0  07/08/2015
1  07/08/2015
2  07/08/2015
3  08/08/2015
4  08/08/2015
5  08/08/2015
6  08/08/2015
7  09/08/2015
8  09/08/2015
9  10/08/2015

首先将Date列转换为日期时间格式:

>>> df['Date'] = pd.to_datetime(df['Date'])

现在,使用np.unique获得结果:

>>> print(np.unique(df["Date"].dt.strftime('%d-%m-%y')))
['08-07-15' '08-08-15' '08-09-15' '08-10-15']