我是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
谢谢您的任何帮助。
答案 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']