Как подсчитать и заполнить значения из двух разных столбцов фрейма данных?

#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 ?