#python #pandas #dataframe
Вопрос:
col1=['aa_1','aa_1','aa_1','aa_2','aa_2','bb_2','bb_2','bb_3','bb_3','bb_3','cc_1','cc_1','cc_3','cc_3']
df1=pd.DataFrame({'col1':col1})
df1['col1']=['aa_1','aa_1','aa_1','aa_2','aa_2','bb_2','bb_2','bb_3','bb_3','bb_3','cc_1','cc_1',
'cc_3','cc_3']
col2=['aa_3','aa_3','aa_3','bb_1','bb_1','bb_1','cc_2','cc_2', 'cc_2']
df2=pd.DataFrame({'col2':col2})
df2['col2']=['aa_3','aa_3','aa_3','bb_1','bb_1','bb_1','cc_2','cc_2',
'cc_2']
Я хочу добавить значения столбцов из df2[‘col2’] в df1[‘col1’] в зависимости от количества значений в df1. Например
- если количество значений «aa_2» < количество значений «aa_1» в df1, то все «aa_3» в df2 следует добавить в «aa_2» в df1, также изменив их имя на «aa_2», а также и
- та же логика, что и описанная выше для «bb»
- «cc_2» в df2 следует добавить в «cc_1» в df1, если количество cc_1 и cc_3 равно
условия должны быть проверены в df1, и если условие выполнено, то значения из df2 должны быть добавлены в df1[‘col1’]
#Expected output should look like as follow
df1['col1']=['aa_1','aa_1','aa_1','aa_2','aa_2','bb_2','bb_2','bb_3','bb_3','bb_3','cc_1','cc_1',
'cc_3','cc_3','aa_2','aa_2','aa_2','bb_2','bb_2','bb_2','cc_1','cc_1',
'cc_1']
Col1 и col2 и из двух разных фреймов данных, и их длины столбцов различны
Есть ли способ сделать это в фрейме данных pandas? У меня есть 100 000 таких строк, которые нужно добавить из df2 в df1.
Комментарии:
1. Пожалуйста, включите образцы
df1
иdf2
и ожидаемый результат.2. Имеют ли два кадра данных «соизмеримые» индексы? Затем вы могли бы сначала объединить два кадра данных в индексе, а затем реализовать свою логику в результате.
3. Я отредактировал вопрос
4. Нет, индексы не соизмеримы. Они равны 0,1,2,3….. для обоих и не учитываются при подсчете значений столбцов
5. Я это понял, но как создавать группы: в реальном случае, что, если имя
aa_1
,aa_2
,bb_1
,bb_3
? Могу ли я разделитьсяaa_1
наaa
группы и1
создать группуaa
?