Pandas concat последовательное добавление данных в один столбец dataframe
Пример:
import pandas as pd
import numpy as np
df = pd.DataFrame(columns = ['A','B'])
df['A']=np.random.randint(5,10,3)
for i in range(3):
temp =pd.DataFrame(np.random.randint(1,5,3), columns=['B'])
df = pd.concat([df,temp], ignore_index= True)
print(df)
Получаем:
A B
0 9.0 NaN
1 7.0 NaN
2 6.0 NaN
3 NaN 2
4 NaN 1
5 NaN 1
6 NaN 2
7 NaN 4
8 NaN 2
9 NaN 4
10 NaN 2
11 NaN 4
Как сделать, чтобы при конкатенации в цикле столбец df['B'] последовательно заполнялся с начала столбца (с нулевого индекса), а не с того индекса где закончился столбец df['A']? Спасибо!
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Не соображу, есть ли универсальное решение, но проще всего, наверное, в первый раз явно писать в столбец B данные, а дальше уже конкатенировать:
import pandas as pd
import numpy as np
df = pd.DataFrame(columns = ['A','B'])
df['A']=np.random.randint(5,10,3)
for i in range(3):
temp =pd.DataFrame(np.random.randint(1,5,3), columns=['B'])
if i == 0:
df['B'] = temp['B']
else:
df = pd.concat([df,temp], ignore_index= True)
print(df)
Вывод:
A B
0 5.0 1
1 9.0 2
2 7.0 1
3 NaN 1
4 NaN 4
5 NaN 3
6 NaN 3
7 NaN 1
8 NaN 4
Автор решения: strawdog
→ Ссылка
Можно еще так сделать:
import pandas as pd
import numpy as np
df = pd.DataFrame(columns = ['A','B'])
df['A']=np.random.randint(5,10,3)
for i in range(3):
temp =pd.DataFrame(np.random.randint(1,5,3), columns=['B'])
df = pd.concat([df,temp], ignore_index= True)
df = df.apply(lambda x: pd.Series(x.dropna().values))
print(df)
df:
A B
0 9.0 2
1 9.0 2
2 5.0 1
3 NaN 2
4 NaN 1
5 NaN 3
6 NaN 1
7 NaN 4
8 NaN 3