'Conditional Pandas combined with matplotlib

I have quite an interesting problem. I have a data frame containing data of a car that is triggered by events in the GPS. The data also contains GPS data. However, I have made a Polygon in Matplot that I want to limit my GPS data. With other words, I am trying filter out data that has been recorded inside of the Polygon that has been created with GPS points. I have tried solving this problem by first adding a new column with a built in condition in matplotlib (poly_path.contains_point(point)).

My GPS column looks like this:

GPS DATA:

GPS
(57.723124, 11.923557)
(57.724115, 11.933557)
(57.723124, 11.923557)
...

And I would like to add a new column using this condition.

GPS DATA:

GPS                    Is inside Polygon
(57.723124, 11.923557) True
(57.724115, 11.933557) False
(57.723124, 11.923557) True
...

And I have tried solving this problem by adding this line:

df1filt["Is inside Polygon"] = poly_path.contains_point(df1filt['GPS'])

However doesnt work.

Any ideas?

Thank you in advance!



Solution 1:[1]

Try:

df1filt["Is inside Polygon"] = df1filt['GPS'].apply(poly_path.contains_point)

Edit:

If the data type of the column is string, you need to create a cleaning function, apply it, then try my first solution.

E.g.

def clean_gps_col(text):
    text = text[1:-1]
    text = text.split(',')
    return (float(text[0]), float(text[1]))

df1filt['GPS_cleaned'] = df1filt['GPS'].apply(clean_gps_col)

now try the first soluton

df1filt["Is inside Polygon"] = df1filt['GPS_cleaned'].apply(poly_path.contains_point)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1