我在这里挣扎,我正在寻找采取以下数据,按日期分组,然后检查组内的行,以确定组是否有任何位置数据与之关联,如果是的话,解压缩它。pandas groupBy日期然后过滤日期和字符串到新的数据框
我的数据样本:
id,dates,text,place
1,2017-01-26 01:06:47,text,"Place(country_code='US', full_name='Manhattan, NY', place_type='city', name='Manhattan', contained_within=[], _api=<tweepy.api.API object at 0x10336f320>, attributes={}, country='United States', bounding_box=BoundingBox(type='Polygon', coordinates=[[[-74, 40], [-73, 40], [-73, 40], [-74, 40]]], _api=<tweepy.api.API object at 0x10336f320>))"
2,2017-01-26 01:05:51,text,"Place(country_code='US', full_name='Manhattan, NY', place_type='city', name='Manhattan', contained_within=[], _api=<tweepy.api.API object at 0x10336f320>, attributes={}, country='United States', bounding_box=BoundingBox(type='Polygon', coordinates=[[[-74, 40], [-73, 40], [-73, 40], [-74, 40]]], _api=<tweepy.api.API object at 0x10336f320>))"
4,2017-01-23 01:38:29,text,
5,2017-01-23 01:36:53,text,
我开始通过加载CSV和分组日期
import pandas as pd
import matplotlib.pyplot as plt
import datetime
fig = plt.figure(figsize=(5,5))
df1 = pd.read_csv('data.csv')
df = df1[['dates','place']]
df['dates']=pd.to_datetime(df['dates'],format='%Y-%m-%d')
df.index=df['dates']
grp = pd.groupby(df,by=[df.index.year,df.index.month,df.index.day])
for date,group in grp:
print(date)
print(group)
这将产生一个数据帧,看起来像这样:
(2017, 1, 26)
dates \
dates
2017-01-26 01:06:47 2017-01-26 01:06:47
2017-01-26 01:05:51 2017-01-26 01:05:51
place
dates
2017-01-26 01:06:47 Place(country_code='US', full_name='Manhattan,...
2017-01-26 01:05:51 NaN
这里是我遇到过滤/条件问题的地方,我的目标是要有一个可以保存的数据框一个csv,看起来像这样:
date, item_count, has_location, location
2017-01-26, 2, yes, Manhattan
2017-01-23, 2, no, na
什么是继续进行的最佳方式?由于
我不知道,但似乎输出与输入不同 - 有问题的一行'ID = 3'。我尝试用我的解决方案省略它,请检查它。 – jezrael