Панды - Найти пустые столбцы строки и обновить в одном столбце - PullRequest
0 голосов
/ 21 марта 2019

Ниже приведен код для чтения значений Excel

import pandas as pd
import numpy as np
import os

df = pd.read_excel(os.path.join(os.getcwd(), 'TestData.xlsx'))
print(df)

Данные Excel -

    Employee ID First Name Last Name    Contact Technology  Comment
0            1   KARTHICK      RAJU  9500012345       .NET      
1            2       TEST            9840112345       JAVA      
2            3                 TEST  9145612345        AWS      
3            4                       9123498765     Python      
4            5       TEST      TEST  9156478965              

Ниже кода возвращается True, если в любой ячейке содержится empty value

print(df.isna())

как показано ниже

   Employee ID  First Name  Last Name  Contact  Technology  Comment
0        False       False      False    False       False     True
1        False       False       True    False       False     True
2        False        True      False    False       False     True
3        False        True       True    False       False     True
4        False       False      False    False        True     True

Я хочу добавить комментарий для каждой строки, как показано ниже

Comment

Last Name is empty
First Name is empty
First Name and Last Name are empty
Technology is empty

Один из способов - перебирать каждую строку, чтобы найти пустой индекси на основе индекса, comments может быть обновлено.

Если таблица содержит огромные данные, итерация может быть не очень хорошей идеей

Есть ли способ добиться этого более питоническим способом

1 Ответ

3 голосов
/ 21 марта 2019

Вы можете упростить решение и установить is и are использовать -, использовать умножение матриц DataFrame.dot с логической маской и столбцами с новым значением, последний удалить разделитель на DataFrame.dot:

#if column exist
df = df.drop('Comment', axis=1)

df['Comment'] = df.isna().dot(df.columns + '-empty, ').str.rstrip(', ')
print (df)
   Employee ID First Name Last Name     Contact Technology  \
0            1   KARTHICK      RAJU  9500012345       .NET   
1            2       TEST       NaN  9840112345       JAVA   
2            3        NaN      TEST  9145612345        AWS   
3            4        NaN       NaN  9123498765     Python   
4            5       TEST      TEST  9156478965        NaN   

                             Comment  
0                                     
1                    Last Name-empty  
2                   First Name-empty  
3  First Name-empty, Last Name-empty  
4                   Technology-empty 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...