#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 и значение при настройке с помощью итерации. Не могли бы вы помочь?