【发布时间】:2021-05-12 16:23:54
【问题描述】:
我有两个这样的数据框:
df1:
col1 col2 time
0 A A_1 05:02:03
1 A A_2 15:36:14
2 A A_1 28:21:47
3 A A_1 47:21:17
4 A A_1 52:28:01
5 A A_2 72:27:14
我想比较“时间”列中的时间是否为 24 但 48 但 72,并将这些结果放入另一个数据框,如下所示:
df2:
col1 col2 time <24 24<time<48 48<time<72 time>72
0 A A_1 1 2 1 NaN
1 A A_2 1 NaN NaN 1
所以,基本上我想要在这个 df2 中计算满足比较的文件数,例如“时间”列中有两个文件属于 A 和 A_1,时间
编辑:
感谢@Andreas 和@Nk03,当我有所有场景时它工作得很好,但是例如当我没有时间> 72 时它失败了,因为'time3':'time>72' 它没有被创建并且我得到一个错误说:
AttributeError: 'DataFrame' object has no attribute 'str'
我应该如何解决这个问题?当我有一个数据框并且它没有任何大于 72 的值或任何不满足其他比较时。假设我有一个这样的数据框。
df1:
col1 col2 time
0 A A_1 05:02:03
1 A A_2 15:36:14
2 A A_1 28:21:47
3 A A_1 47:21:17
4 A A_1 32:28:01
5 A A_2 37:27:14
并且仍然有这个 df2 理想的输出:
col1 col2 time <24 24<time<48 48<time<72 time>72
0 A A_1 1 3 NaN NaN
1 A A_2 1 1 NaN NaN
编辑2: 这是在您的答案中添加额外的行后我得到的错误:
df[list(set(d.values()).difference(df.columns))] = np.nan
【问题讨论】:
-
为什么不添加另一列与时间箱?这可能是一种更有用的格式
标签: python python-3.x pandas dataframe compare