1

I'm attempting to create Dataframe using list. I have 2 List, I'm splitting list into multiple lists. using that multiple lists I'm creating dataframe and now I want to split that created dataframe.

below is the code of creating dataframe using list:

origin_list = ['60.17202,24.91805','51.13747,1.33148','55.65348,22.94213','61.17202,24.91805','62.13747,1.33148','63.65348,22.94213']
Destination_list = ['51.07906,12.13216','52.96035,1.905025','53.05306,16.13416','54.07906,3.13216','55.03406,12.13216','56.07906,12.13216','57.96035,1.905025','58.05306,16.13416','59.07906,3.13216','60.03406,12.13216']

# Code for splitting list into multiple lists 
origin_li = [origin_list[i:i + 3] for i in range(0, len(origin_list), 3)]
destination_li = [Destination_list[i:i + 4] for i in range(0, len(Destination_list), 4)]

# Output of above 2 lines
# origing_li = [['60.17202,24.91805', '51.13747,1.33148', '55.65348,22.94213'], ['61.17202,24.91805', '62.13747,1.33148', '63.65348,22.94213']]
# destination_li = [['51.07906,12.13216', '52.96035,1.905025', '53.05306,16.13416', '54.07906,3.13216'], ['55.03406,12.13216', '56.07906,12.13216', '57.96035,1.905025', '58.05306,16.13416'], ['59.07906,3.13216', '60.03406,12.13216']]

df1 = pd.DataFrame()
# loop for every list
for i in origin_li:
    print(len(i))
    for j in destination_li:
        sub_df = pd.DataFrame(list(itertools.product(i,j)))
        df1 = pd.concat([df1,sub_df])
print(df1)

by running above code I'm getting an output like: DataFrame

Now I want to split that output_dataframe by origin_li. For eg. Multiple Dataframes

How do I split dataframe into multiple dataframes?

Namita Tare
  • 123
  • 9
  • What you want to do is [filtering specific rows](https://pandas.pydata.org/docs/getting_started/intro_tutorials/03_subset_data.html#how-do-i-filter-specific-rows-from-a-dataframe) from the original dataframe and assigning those rows to new dataframes. As shown in the documentation, that can be done using filtering conditions or selecting specific rows. It seems that in your case, you want to have dataframes with fixed number of rows (4 rows), so you can have a look to [this answer](https://stackoverflow.com/a/54062261/1820250). – tomasborrella Jan 19 '23 at 09:51

1 Answers1

1

You can use groupby to create your dataframes:

dfs = dict(list(df1.groupby(np.arange(len(df1)) // 4)))

Output:

>>> dfs[1]
                  0                  1
4  51.13747,1.33148  51.07906,12.13216
5  51.13747,1.33148  52.96035,1.905025
6  51.13747,1.33148  53.05306,16.13416
7  51.13747,1.33148   54.07906,3.13216

>>> dfs[5]
                    0                  1
8   55.65348,22.94213  55.03406,12.13216
9   55.65348,22.94213  56.07906,12.13216
10  55.65348,22.94213  57.96035,1.905025
11  55.65348,22.94213  58.05306,16.13416
Corralien
  • 109,409
  • 8
  • 28
  • 52