Pandas dataframe захватывает строку с несколькими столбцами, заполненными константой - PullRequest
1 голос
/ 17 октября 2019

Иметь фрейм данных как:

data = {'ledger_1': [3, -99,-99], 'ledger_2': [0.1, 1.2,-99] , 'geo_3' : [2.3,4.5,1.0]}
df_data = pd.DataFrame.from_dict(data)

  geo_3 ledger_1    ledger_2
0  2.3   3            0.1
1  4.5   -99          1.2
2  1.0   -99         -99.0

Теперь я хочу захватить строку, в которой оба параметра: ledger_1 и ledger_2 не имеют постоянного значения -99

Я пытался сделать-

cols = ['ledger_1','ledger_2']
df_data[df_data[cols]!= -99]

но это дает

   geo_3    ledger_1    ledger_2
0   NaN       3.0        0.1
1   NaN       NaN        1.2
2   NaN       NaN        NaN

, где в качестве решения, которое я хочу, это просто первая запись -

   geo_3    ledger_1    ledger_2
0   2.3      3.0         0.1

Как отфильтровать кадр данных на основенабор столбцов (ledger_1, _2, _3 ..._ n) и общее условие (! = -99), а не только индивидуально, поскольку список столбцов довольно велик?

1 Ответ

1 голос
/ 17 октября 2019

Используйте DataFrame.all для проверки, если оба значения True s:

cols = ['ledger_1','ledger_2']
df = df_data[(df_data[cols]!= -99).all(axis=1)]
print (df)
   ledger_1  ledger_2  geo_3
0         3       0.1    2.3

Подробности :

print (df_data[cols]!= -99)
   ledger_1  ledger_2
0      True      True
1     False      True
2     False     False

print ((df_data[cols]!= -99).all(axis=1))
0     True
1    False
2    False
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...