如何在Python中获取csv所有列中特定类别的日期时间值作为结果?

我有一个 csv 文件,其中包含 20 天内用户社交媒体活动的值 我想获取第一天用户活动的详细信息 以下是 csv 中条目的示例



DateTime                  Instagram  Facebook   Twitter

(2020,09,01,10,00,00)        Y          N         Y

(2020,09,01,10,01,00)        N          Y         Y

(2020,09,01,10,02,00)        N          Y         N

(2020,09,01,10,03,00)        N          Y         N

(2020,09,01,10,04,00)        Y          N         Y

(2020,09,01,11,00,00)        Y          N         N

(2020,09,02,10,00,00)        N          Y         Y

(2020,09,02,10,00,00)        Y          N         N

(2020,09,02,10,00,00)        N          N         N

(2020,09,03,10,00,00)        Y          Y         Y

Y 代表用户处于活动状态,N 代表用户处于非活动状态 我想显示第一天(即2020-09-012020 年 9 月 1 日)所有应用程序的活动统计信息。


所以我希望结果看起来像这样(只有用户在该应用程序上处于活动状态(Y)的日期时间值)


{'Instagram':[(2020,09,01,10,00,00),(2020,09,01,10,04,00),(2020,09,01,11,00,00)],

 'Facebook':[(2020,09,01,10,01,00), (2020,09,01,10,02,00), (2020,09,01,10,03,00)],

 'Twitter':[(2020,09,01,10,00,00), (2020,09,01,10,01,00), (2020,09,01,10,04,00)]}

我写了一段代码,但它没有提供我想要的结果


df['DateTime'] = pd.to_datetime(df['DateTime'], format='(%Y,%m,%d,%H,%M,%S)')


for idx, d in df.groupby(df['DateTime'].dt.date):

    print(d.drop('DateTime', axis=1).to_dict('list'))


This was the result I got

    

{'Instagram': ['Y', 'N', 'N', 'N', 'Y', 'Y'], 'Facebook': ['N', 'Y', 'Y', 'Y', 'N', 'N'], 'Twitter': ['Y', 'Y', 'N', 'N', 'Y', 'N']}

{'Instagram': ['N', 'Y', 'N'], 'Facebook': ['Y', 'N', 'N'], 'Twitter': ['Y', 'N', 'N']}

{'Instagram': ['Y'], 'Facebook': ['Y'], 'Twitter': ['Y']}


DateTime 列由日期时间对象格式的值组成,我将其转换为 pandas 日期时间格式


心有法竹
浏览 45回答 2
2回答

汪汪一只猫

将值转换为新列,按 过滤第一个日期boolean indexing,然后按 unpivotDataFrame.melt和 aggreagate list:df['d'] = pd.to_datetime(df['DateTime'], format='(%Y,%m,%d,%H,%M,%S)')day1 = df['d'].dt.date[0]df = df[df['d'].dt.date.eq(day1)] df = df.melt(['DateTime','d']) df = df[df['value'].eq('Y')] d = df.groupby('variable')['DateTime'].agg(list).to_dict()print (d){'Facebook': ['(2020,09,01,10,01,00)', '(2020,09,01,10,02,00)', '(2020,09,01,10,03,00)'],  'Instagram': ['(2020,09,01,10,00,00)', '(2020,09,01,10,04,00)', '(2020,09,01,11,00,00)'],  'Twitter': ['(2020,09,01,10,00,00)', '(2020,09,01,10,01,00)', '(2020,09,01,10,04,00)']}如果需要输出datetime嵌套字典中的每个:df['d'] = pd.to_datetime(df['DateTime'], format='(%Y,%m,%d,%H,%M,%S)')df = df.melt(['DateTime','d']) df = df[df['value'].eq('Y')] s = df.groupby([df['d'].dt.strftime('%Y-%m-%d'), 'variable'])['DateTime'].agg(list)print (s)d1 = {level: s.xs(level).to_dict() for level in s.index.levels[0]}print (d1){'2020-09-01': {'Facebook': ['(2020,09,01,10,01,00)', '(2020,09,01,10,02,00)', '(2020,09,01,10,03,00)'],                 'Instagram': ['(2020,09,01,10,00,00)', '(2020,09,01,10,04,00)', '(2020,09,01,11,00,00)'],                'Twitter': ['(2020,09,01,10,00,00)', '(2020,09,01,10,01,00)', '(2020,09,01,10,04,00)']}, '2020-09-02': {'Facebook': ['(2020,09,02,10,00,00)'],                 'Instagram': ['(2020,09,02,10,00,00)'],                 'Twitter': ['(2020,09,02,10,00,00)']},  '2020-09-03': {'Facebook': ['(2020,09,03,10,00,00)'],                 'Instagram': ['(2020,09,03,10,00,00)'],                 'Twitter': ['(2020,09,03,10,00,00)']}}print (d1['2020-09-01']){'Facebook': ['(2020,09,01,10,01,00)', '(2020,09,01,10,02,00)', '(2020,09,01,10,03,00)'],  'Instagram': ['(2020,09,01,10,00,00)', '(2020,09,01,10,04,00)', '(2020,09,01,11,00,00)'], 'Twitter': ['(2020,09,01,10,00,00)', '(2020,09,01,10,01,00)', '(2020,09,01,10,04,00)']}print (d1['2020-09-02']){'Facebook': ['(2020,09,02,10,00,00)'], 'Instagram': ['(2020,09,02,10,00,00)'], 'Twitter': ['(2020,09,02,10,00,00)']}

慕森卡

使用readline逐行读取file.csv。然后你应该将 Instagram 的日期时间(在“Y”的情况下,所以使用 if)收集在一个列表中。对 Facebook 和 Twitter 执行同样的操作。所以,这是总体方法:Instagram=[] #make an empty listfor row in file.readlines():  #read line by line of your file    row2=row.split(';')  #split elements and make a list with name row2    if str(row2[1])=="Y": Instagram.append(row2[0]) # add date time to instagram list    #do the same for facebook and twitterprint(Instagram)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python