熊猫按单个列中的多个值分组

星辰

我已经从205MB的CSV(约110万行乘15列)创建了pandas数据框。它包含一个称为starttimedtype的列object(更确切地说是一个字符串)。格式如下:7/1/2015 00:00:03

我想从此pandas数据框创建两个新的数据框。一个应包含与周末日期对应的所有行,另一个应包含与工作日日期对应的所有行。

周末日期是:

weekends = ['7/4/2015', '7/5/2015', '7/11/2015', '7/12/2015', 
            '7/18/2015', '7/19/2015', '7/25/2015', '7,26/2015']

我试图将字符串转换为datetime(pd.to_datetime),以期使值更易于解析,但是当我将其挂起的时间太长时,我最终重新启动了几次内核。

然后,我决定用来df["date"], df["time"] = zip(*df['starttime'].str.split(' ').tolist())在原始数据帧中创建两个新列(一个用于日期,一个用于时间)。接下来,我想我将使用布尔测试将dateasTrue和其他所有周末记录(根据新字段)“标记” False并创建另一个包含这些值的列,然后就可以将Trueand分组False

例如,test1 = bikes['date'] == '7/1/2015'返回True所有2015年7月1日值的返回值,但是我无法弄清楚如何遍历其中的所有项,weekends以便获得True所有周末的日期。我试过了,打破了Python(再次挂了):

for i in weekends:
    for k in df['date']:
        test2 = df['date'] == i

我将不胜感激(使用我的逻辑和我的代码)。

亚历山大大帝

首先,创建一个带有1.1m行的字符串时间戳记的DataFrame:

df = pd.DataFrame({'date': ['7/1/2015 00:00:03', '7/1/2015 00:00:04'] * 550000})

接下来,您可以将它们简单地转换为Pandas时间戳,如下所示:

df['ts'] = pd.to_datetime(df.date)

此操作仅用了不到两分钟的时间。但是,如果指定格式,则花费了不到7秒的时间:

df['ts'] = pd.to_datetime(df.date, format='%m/%d/%Y %H:%M:%S')

现在,可以很容易地按如下步骤设置周末标记(大约花费了3秒钟):

df['weekend'] = [d.weekday() >= 5 for d in df.ts]

最后,很容易将您的DataFrame子集化,这几乎不需要时间:

df_weekdays = df.loc[~df.weekend, :]
df_weekends = df.loc[df.weekend, :]

周末标志是用来帮助解释发生了什么。您可以简化如下:

df_weekdays = df.loc[df.ts.apply(lambda ts: ts.weekday() < 5), :]
df_weekends = df.loc[df.ts.apply(lambda ts: ts.weekday() >= 5), :]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫按条件按列值分组

如何对按熊猫中的分类列分组的值求和?

扩展均值按熊猫中的多个列分组

按两列分组,熊猫python中第三列的最大值

熊猫:按两列分组,对第一列分组中的第一个值求和

如何在熊猫中不按分组保留分组列

如何用熊猫中的交换值按两列分组?

在Linq中按多个值分组

熊猫如何按列中的特定值分组?

熊猫:按熊猫0.23.4中的两列组合分组

如何按列分组并删除或分隔熊猫中的值?

熊猫多个“分组依据”并比较不同列中的值

在熊猫中按两列分组

如何在列中拆分多个值并在熊猫中对byby值进行分组?

熊猫数据框按列中的多个字符串分组

按多列分组,并对熊猫中其他列的值进行透视和计数

熊猫-按任何列中的最高单个值对数据框进行排序

熊猫按列中的每个值分组

按多个列分组,其中一些具有单个值(在Python中)

在熊猫中,当按另一列分组时,如何查找自按值改变的列以来的时间?

熊猫:按值将单元格值分组到单独的列中

为单个熊猫列中的值创建虚拟列并分组为单行

mysql在多个列中按值分组

Python:按不同的值对单个列进行分组

熊猫按块分组而不是单个值

熊猫按列表中的值分组(串联)

如何在熊猫中按公共值分组并根据它分成列?

按列分组并从熊猫数据框中的其他列中选择特定值

按两列分组,求和、计数并在单独的列中显示输出值(熊猫)