diff --git a/trackintel/analysis/location_identification.py b/trackintel/analysis/location_identification.py
index 33e691c..6682e4a 100644
--- a/trackintel/analysis/location_identification.py
+++ b/trackintel/analysis/location_identification.py
@@ -62,7 +62,7 @@ def location_identifier(staypoints, method="FREQ", pre_filter=True, **pre_filter
     if pre_filter:
         f = pre_filter_locations(sp, **pre_filter_kwargs)
     else:
-        f = pd.Series(np.full(len(sp.index), True))
+        f = pd.Series(np.full(len(sp.index), True), index=sp.index)
 
     if method == "FREQ":
         method_val = freq_method(sp[f], "home", "work")

diff --git a/tests/analysis/test_location_identification.py b/tests/analysis/test_location_identification.py
index a256ca5..af0917c 100644
--- a/tests/analysis/test_location_identification.py
+++ b/tests/analysis/test_location_identification.py
@@ -253,6 +253,15 @@ class TestLocation_Identifier:
         osna = osna_method(example_osna)
         assert_geodataframe_equal(li, osna)
 
+    def test_pre_filter_index(self, example_freq):
+        """Test if pre_filter=False works with non-serial index"""
+        # issue-#403
+        example_freq.index = *reversed(example_freq.index[1:]), example_freq.index[0]
+        example_freq.index += 100  # move it so that there is no overlap to a range index
+        li = location_identifier(example_freq, method="FREQ", pre_filter=False)
+        fr = freq_method(example_freq)
+        assert_geodataframe_equal(li, fr)
+
 
 @pytest.fixture
 def example_osna():

Bug in location_identifier for pre_filter=False and non-serial index
The function [location_identifier](https://github.com/mie-lab/trackintel/blob/master/trackintel/analysis/location_identification.py#L7) assumes that an index is serial e.g., incremental from 0 to n. It throws an error in fthe index is not serial and sorts the dataframe (may not be intended) if the index is serial but not in order.

The problem is that for `pre_filter=False` [here](https://github.com/mie-lab/trackintel/blob/master/trackintel/analysis/location_identification.py#L65) a boolean series with the same length as the staypoint dataframe and serial index is created. 

From the geopandas documentation for what can be input to `loc` for indexing: 
_An alignable boolean Series. The index of the key will be aligned before masking._ [source](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html)

A fix could be to either use the original index when creating `f` in line [65](https://github.com/mie-lab/trackintel/blob/master/trackintel/analysis/location_identification.py#L65), to use a boolean array without index or to use iloc instead of loc.



tests/analysis/test_location_identification.py::TestLocation_Identifier::test_pre_filter_index
tests/analysis/test_location_identification.py::TestPre_Filter::test_no_kw tests/analysis/test_location_identification.py::TestPre_Filter::test_thresh_sp tests/analysis/test_location_identification.py::TestPre_Filter::test_thresh_loc tests/analysis/test_location_identification.py::TestPre_Filter::test_thresh_sp_at_loc tests/analysis/test_location_identification.py::TestPre_Filter::test_tresh_loc_time tests/analysis/test_location_identification.py::TestPre_Filter::test_loc_period tests/analysis/test_location_identification.py::TestPre_Filter::test_agg_level tests/analysis/test_location_identification.py::TestPre_Filter::test_agg_level_error tests/analysis/test_location_identification.py::TestPre_Filter::test_non_continous_index tests/analysis/test_location_identification.py::TestFreq_method::test_default_labels tests/analysis/test_location_identification.py::TestFreq_method::test_custom_labels tests/analysis/test_location_identification.py::TestFreq_method::test_duration tests/analysis/test_location_identification.py::Test_Freq_Transform::test_function tests/analysis/test_location_identification.py::Test_Freq_Assign::test_function tests/analysis/test_location_identification.py::Test_Freq_Assign::test_more_labels_than_entries tests/analysis/test_location_identification.py::TestLocation_Identifier::test_unkown_method tests/analysis/test_location_identification.py::TestLocation_Identifier::test_no_location_column tests/analysis/test_location_identification.py::TestLocation_Identifier::test_pre_filter tests/analysis/test_location_identification.py::TestLocation_Identifier::test_freq_method tests/analysis/test_location_identification.py::TestLocation_Identifier::test_osna_method tests/analysis/test_location_identification.py::TestOsna_Method::test_default tests/analysis/test_location_identification.py::TestOsna_Method::test_overlap tests/analysis/test_location_identification.py::TestOsna_Method::test_only_weekends tests/analysis/test_location_identification.py::TestOsna_Method::test_two_users tests/analysis/test_location_identification.py::TestOsna_Method::test_leisure_weighting tests/analysis/test_location_identification.py::TestOsna_Method::test_only_one_work_location tests/analysis/test_location_identification.py::TestOsna_Method::test_only_one_rest_location tests/analysis/test_location_identification.py::TestOsna_Method::test_only_one_leisure_location tests/analysis/test_location_identification.py::TestOsna_Method::test_prior_activity_label tests/analysis/test_location_identification.py::TestOsna_Method::test_multiple_users_with_only_one_location tests/analysis/test_location_identification.py::Test_osna_label_timeframes::test_weekend tests/analysis/test_location_identification.py::Test_osna_label_timeframes::test_weekday