Python 从使用d、w、m、y表示天、周、月、年的Pandas数据框中获取最小值和最大值
因此,基本上,我正在处理的Pandas数据框中的数据有一个列,该列给出了time post事件。数据始终遵循#格式,然后是d、w、m、y,表示天、周、月、年(2d、17w等)。我试图得到最小值和最大值。不幸的是,由于单位不同,这项工作很困难:3周少于2个月,尽管2是较小的数字;150周长于1年,尽管年是较大的单位 我想实现一些复杂的代码,将一切转换成天,然后对它们进行排序,但有更好的解决方案吗Python 从使用d、w、m、y表示天、周、月、年的Pandas数据框中获取最小值和最大值,python,pandas,Python,Pandas,因此,基本上,我正在处理的Pandas数据框中的数据有一个列,该列给出了time post事件。数据始终遵循#格式,然后是d、w、m、y,表示天、周、月、年(2d、17w等)。我试图得到最小值和最大值。不幸的是,由于单位不同,这项工作很困难:3周少于2个月,尽管2是较小的数字;150周长于1年,尽管年是较大的单位 我想实现一些复杂的代码,将一切转换成天,然后对它们进行排序,但有更好的解决方案吗 举个例子,如果我有一个120天、3个w、2个y、15个m和14天的值列表,我将如何制作一个函数,使我的
举个例子,如果我有一个120天、3个w、2个y、15个m和14天的值列表,我将如何制作一个函数,使我的最小值(在本例中为14天)和最大值(2 y)示例如何将字符串列转换为
pd.Timedelta
:
d = {'Time':['120 d', '3 w', '2 y', '15 m', '14 d']}
df = pd.DataFrame(d)
df['Time_td'] = df['Time'].map(pd.Timedelta)
print(df)
print('Min is', df['Time_td'].min())
print('Max is', df['Time_td'].max())
印刷品:
Time Time_td
0 120 d 120 days 00:00:00
1 3 w 21 days 00:00:00
2 2 y 730 days 11:38:24
3 15 m 0 days 00:15:00
4 14 d 14 days 00:00:00
Min is 0 days 00:15:00
Max is 730 days 11:38:24
示例如何将字符串列转换为pd.Timedelta:
d = {'Time':['120 d', '3 w', '2 y', '15 m', '14 d']}
df = pd.DataFrame(d)
df['Time_td'] = df['Time'].map(pd.Timedelta)
print(df)
print('Min is', df['Time_td'].min())
print('Max is', df['Time_td'].max())
印刷品:
Time Time_td
0 120 d 120 days 00:00:00
1 3 w 21 days 00:00:00
2 2 y 730 days 11:38:24
3 15 m 0 days 00:15:00
4 14 d 14 days 00:00:00
Min is 0 days 00:15:00
Max is 730 days 11:38:24
也许您可以将该列转换为
pd.Timedelta
,然后进行比较。例如,print(pd.Timedelta('17w')>pd.Timedelta('2d'))
isTrue
你能帮我发个帖子吗?谢谢Andrej。我将把它弄得一团糟,看看是否可以使用这个函数。Rahul,我发布了一个例子。也许你可以将这个列转换为pd.Timedelta
,然后进行比较。例如,print(pd.Timedelta('17w')>pd.Timedelta('2d'))
isTrue
你能帮我发个帖子吗?谢谢Andrej。我将把它弄得一团糟,看看是否可以使用这个函数。拉胡尔,我贴了个例子。