Как соединить/объединить некоторый набор столбцов с другим или сделать из него цикл?

#python #pandas #join #concatenation #nan

Вопрос:

Итак, здесь, например, у меня есть 2 столбца как Column1a, Column1b и еще 3 столбца как Column2a, Column2b, Column2c. Я хочу создать выходной столбец, в котором есть массив от столбца 1a до столбца 2c (если он присутствует), как указано ниже. По крайней мере один из столбца 1 и 1 из столбца 2 должны присутствовать для вывода.

 Column1a Column1b Column2a Column2b Column2c OUTPUT  123A QWER ERTY 1256Y 234  3456 89AS  WERT 1234 9087  CVBT  

РЕЗУЛЬТАТ должен быть следующим:

 OUTPUT ["123A|ERTY","123A|1256Y","123A|234","QWER|ERTY","QWER|1256Y","QWER|234] "" ["WERT|1234","WERT|9087"] ""  

Пожалуйста, помогите мне с использованием цикла в таких случаях.Спасибо

Ответ №1:

Вот ответ на ваш вопрос:

 import pandas as pd import numpy as np # df=pd.read_excel('demo2.xlsx')  all_columns = list(df) # Creates list of all column headers df[all_columns] = df[all_columns].astype(str)  from itertools import product x=pd.DataFrame(list(product([0,1], [2,3,4])), columns=['l1', 'l2'])   for j in range(len(df)):  full=[]  if (((df.iloc[j,0]=="nan") amp; (df.iloc[j,1]=="nan")) | ((df.iloc[j,2]=="nan") amp; (df.iloc[j,3]=="nan") amp;(df.iloc[j,4]=="nan")) ):  full.append("")  else:   l=[]  for k in range(len(x)):  if (df.iloc[j,x.iloc[k,0]]!="nan"):  l1=df.iloc[j,x.iloc[k,0]]  if (df.iloc[j,x.iloc[k,1]]!="nan"):  l2=df.iloc[j,x.iloc[k,1]]  full.append(l1 "|" l2)  df.loc[j,"OUTPUT"]=full  

Вывод выглядит так: введите описание изображения здесь

Комментарии:

1. Привет @Yashar Я использовал это и получил эту ошибку.Ошибка значения: Должны быть одинаковые ключи len и значение при настройке с помощью итерации. Не могли бы вы помочь?