'Creating a stack list in pandas
I am trying to create a column called days for 27 different cities with 151 rows for each city so a total of 4077 rows. 0 to 151 represent no of days for each cities. I have the following code. is there way of creating 4077 rows without doing it 27 times and appending the columns.
city1=pd.Series(range(0,151),name="days")
city1.to_frame()
days
0 0
1 1
2 2
3 3
4 4
... ...
146 146
147 147
148 148
149 149
150 150
151 rows × 1 columns
Solution 1:[1]
IIUC, one way using pandas.MultiIndex.from_product:
s = pd.MultiIndex.from_product([range(27), range(151)])
df = s.to_frame(False, ["cities", "days"])
print(df)
Output:
cities days
0 0 0
1 0 1
2 0 2
3 0 3
4 0 4
... ... ...
4072 26 146
4073 26 147
4074 26 148
4075 26 149
4076 26 150
Solution 2:[2]
Please try this:
import numpy as np
import pandas as pd
no_city =27
no_days = 151
days = list(range(0,no_days)) * no_city
city_names = ['city_'+str(i+1) for i in range(0,no_city)] #provide city list if you already have
city_names = np.repeat(city_names,no_days)
df = pd.DataFrame({'city':city_names,'days':days})
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 | Chris |
| Solution 2 | prahasanam_boi |
