Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从使用d、w、m、y表示天、周、月、年的Pandas数据框中获取最小值和最大值_Python_Pandas - Fatal编程技术网

Python 从使用d、w、m、y表示天、周、月、年的Pandas数据框中获取最小值和最大值

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天的值列表,我将如何制作一个函数,使我的

因此,基本上,我正在处理的Pandas数据框中的数据有一个列,该列给出了time post事件。数据始终遵循#格式,然后是d、w、m、y,表示天、周、月、年(2d、17w等)。我试图得到最小值和最大值。不幸的是,由于单位不同,这项工作很困难:3周少于2个月,尽管2是较小的数字;150周长于1年,尽管年是较大的单位

我想实现一些复杂的代码,将一切转换成天,然后对它们进行排序,但有更好的解决方案吗


举个例子,如果我有一个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'))
is
True
你能帮我发个帖子吗?谢谢Andrej。我将把它弄得一团糟,看看是否可以使用这个函数。Rahul,我发布了一个例子。也许你可以将这个列转换为
pd.Timedelta
,然后进行比较。例如,
print(pd.Timedelta('17w')>pd.Timedelta('2d'))
is
True
你能帮我发个帖子吗?谢谢Andrej。我将把它弄得一团糟,看看是否可以使用这个函数。拉胡尔,我贴了个例子。