Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 熊猫在间隔中寻找价值_Python_Pandas - Fatal编程技术网

Python 熊猫在间隔中寻找价值

Python 熊猫在间隔中寻找价值,python,pandas,Python,Pandas,如果数据帧(transdf)中有如下事务数据: OrderId, ShippmentSegmentsDays 1 , 1 2 , 3 3 , 4 4 , 10 OrderId, ShippmentSegmentsDays, ShippmentSegment 1 , 1 , '1 day late' 2 , 0 , 'On-Time' 3 , 4

如果数据帧(transdf)中有如下事务数据:

OrderId, ShippmentSegmentsDays
1      , 1
2      , 3
3      , 4
4      , 10
OrderId, ShippmentSegmentsDays, ShippmentSegment
1      , 1                    , '1 day late'
2      , 0                    , 'On-Time'
3      , 4                    , '>3 days late'
4      , 10                   , '>3 days late'
我还有另一个df(segmentdf),它指定了间隔:

ShippmentSegmentDaysStart , ShippmentSegmentDaysEnd , ShippmentSegment
-9999999                  , 0                       , 'On-Time'
0                         , 1                       , '1 day late'
1                         , 2                       , '2 days late'
2                         , 3                       , '3 days late'
3                         , 9999999                 , '>3 days late'
我还需要添加一个基于“ShipmentSegmentsDays”和“ShipmentSegments”的专栏。所以基本上,对于“transdf”中的每一行,我需要检查“ShipmentSegmentsDays”值,在该值中可以从“segmentdf”中找到间隔

因此,“transdf”应如下所示:

OrderId, ShippmentSegmentsDays
1      , 1
2      , 3
3      , 4
4      , 10
OrderId, ShippmentSegmentsDays, ShippmentSegment
1      , 1                    , '1 day late'
2      , 0                    , 'On-Time'
3      , 4                    , '>3 days late'
4      , 10                   , '>3 days late'
有谁能给我一个如何处理这种情况的建议吗

谢谢!
Stefan

如果您知道
段DF
中设置的规则是静态的且不会更改,则可以使用
pandas.apply(args)
将函数应用于
transdf
数据框中的每一行。也许下面的代码片段可以帮助您。我没有测试过这个,所以要小心,但我认为它应该让你朝着正确的方向开始

# create a series of just the data from the 'ShippmentSegmentDays' column
seg_days_df = trends['ShippmentSegmentDays']

# Create a new column, 'ShippmentSegment', in 'transdf' data frame by calling
# our utility function on the series created above.
transdf['ShippmentSegment'] = seg_days_df.apply(calc_ship_segment, axis=1)

# Utility function to define the rules set in the 'segmentdf' data frame
def calc_ship_segment(num):
     if not num:
         return 'On Time'
     elif num == 1:
         return '1 Day Late'
     elif num == 2:
         return '2 Days Late'
     elif num == 3:
         return '3 Days Late'
     else:
         return '>3 Days Late'

以前的帖子,但我也有同样的问题。熊猫提供了一个适合我的解决方案。

这看起来与我刚才回答的问题相似。看看它是否有用
!num
不是有效的Python语法,我不认为。