Python 熊猫分组方式和筛选方式
我有一个数据框Python 熊猫分组方式和筛选方式,python,pandas,Python,Pandas,我有一个数据框data,我有一个datetime列,名为created\u at,还有一个名为text的列。我想提取在day创建的u与输入日期(从给定范围)匹配的行,以及以字母“a”开头的text值 我的数据框相当大,所以我认为最初我应该按天分组,然后使用分组的数据框来过滤每一天和文本 data.set_index('created_at').groupby(pd.Grouper(freq='D')) 但是,我不确定如何应用最终过滤器。(我也不确定这是否是实现我想要的最好方法)我不知道其余的,
data
,我有一个datetime
列,名为created\u at
,还有一个名为text
的列。我想提取在day创建的u与输入日期(从给定范围)匹配的行,以及以字母“a”开头的text
值
我的数据框相当大,所以我认为最初我应该按天分组,然后使用分组的数据框来过滤每一天和文本
data.set_index('created_at').groupby(pd.Grouper(freq='D'))
但是,我不确定如何应用最终过滤器。(我也不确定这是否是实现我想要的最好方法)我不知道其余的,因为你没有给我们一个短端版本的示例,但我至少可以将输入与列匹配
input = input("input datetime : ")
created_at_column = df.loc[:, created_at] # df is your DataFrame
[x for x in list(created_at_column) if x == input]
正如@HenryEcker所说,很难为你确定最佳选择。
我从nltk生成2021-05-01和2021-05-31之间的1836个日期和1836个单词(小写)
? 对数据帧的外观和实现目标的了解非常少,很难确定这是否是实现目标的最佳方式。@HenryEcker我想获得在
创建的与我给它的日期匹配的实体,文本
列也应该以“a”开头。唯一的问题是dataframe本身有很多行,我想做很多天的这个操作。
# criteria
input_day = "2021-05-30"
first_letter = "a"
# Pandas to Numpy
created_at = data["created_at"].dt.date.values.astype("datetime64[D]")
text = data["text"].values.astype("<U1") # keep only the first letter
# Filter
out = data.iloc[np.nonzero((created_at == np.datetime64(input_day))
& (text == first_letter))]
>>> out
created_at text
1794 2021-05-30 07:54:46.103542234 alienability
1819 2021-05-30 17:43:19.455040872 anthologically
1820 2021-05-30 18:06:51.989100817 appreciativ
1830 2021-05-30 22:02:17.329700272 acoustician
1832 2021-05-30 22:49:22.397820163 afternote