Количество столбцов, которые как значение в панде dataframe - PullRequest
1 голос
/ 09 мая 2019

Вывести новый столбец панд на основе длины строки в других столбцах

Я хочу посчитать количество столбцов, которые имеют значение в каждой строке, и создать новый столбец с этим номером. Предположим, если у меня есть 3 столбца и два столбца имеют какое-то значение, тогда новый столбец для этой строки будет иметь значение 2.

df = pd.DataFrame({'ID':['1','2','3'], 'J1': ['a','ab',''],'J2':['22','','33']})
print df

Вывод должен быть таким:

  ID  J1  J2 Count_of_cols_have_values 
0  1   a  22  2
1  2  ab      1 
2  3      33  1

1 Ответ

2 голосов
/ 09 мая 2019

Один из способов - проверить, какие ячейки не равны (DataFrame.ne) пустой строке, и взять сумму по строкам:

df['Count_of_cols_have_values '] = df.set_index('ID').ne('').sum(1).values

  ID  J1  J2   Count_of_cols_have_values 
0  1   a  22                           2
1  2  ab                               1
2  3      33                           1

Или вы также можете replace с NaNs и count, что возвращает количество значений non_NA:

df['Count_of_cols_have_values '] = df.set_index('ID').replace('',np.nan).count(1).values

  ID  J1  J2   Count_of_cols_have_values 
0  1   a  22                           2
1  2  ab                               1
2  3      33                           1
...