Lo c фильтровать и исключать нулевые значения - PullRequest
0 голосов
/ 08 мая 2020
1. vat.loc[(vat['Sum of VAT'].isin([np.nan, 0])) &
2.        (vat['Comment'] == "Transactions 0DKK") &
3.        (vat['Type'].isin(['Bill', 'Bill Credit'])) &
4.        (vat['Maximum of Linked Invoice'].notnull()), 'Comment'] = 'Linked invoice'
5. vat[vat["Comment"] == "Linked invoice"]

Привет всем,

У меня проблема со строкой:

(vat['Maximum of Linked Invoice'].notnull()

Кажется, не работает должным образом, когда я пытаюсь исключить все нулевые значения значения в строках. Фактически, он не исключает нулевые значения, а вместо этого включается в вывод фрейма данных. Остальной синтаксис работает отлично. Я пробовал использовать другой синтаксис, но нулевые значения по-прежнему включены в столбец «Максимум связанного счета». Не понимаю, почему не работает?

Еще раз привет,

Я провел еще несколько исследований, и мне кажется, что при импорте CSV-файл имел 62107 ненулевых значений для столбца «Максимум связанного счета-фактуры», но это неверно, при открытии csv_file и проверке в нем были тысячи пробелов в строках, но почему он не был прочитан как нулевые значения при импорте? Вы видели что-нибудь подобное раньше?

См. Информацию ниже

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 62108 entries, 0 to 62107
Data columns (total 35 columns):
 #   Column                               Non-Null Count  Dtype  
---  ------                               --------------  -----  
 0   External ID                          62108 non-null  object 
 1   Document Number                      62107 non-null  object 
 2   Transaction Number                   62107 non-null  object 
 3   Maximum of Linked Invoice            62107 non-null  object 
 4   Type                                 62107 non-null  object 
 5   Date                                 62107 non-null  object 
 6   Period                               62107 non-null  object 
 7   Terms                                62107 non-null  object 
 8   Maximum of Due Date/Receive By       50885 non-null  object 
 9   Company Name                         62107 non-null  object 
 10  Customer VAT Registration Number     62107 non-null  object 
 11  Bill to City                         62107 non-null  object 
 12  Bill to State                        62107 non-null  object 
 13  Bill to Country                      62107 non-null  object 
 14  Bill to Zip                          62107 non-null  object 
 15  Source System                        62107 non-null  object 
 16  Source System Identifier             62107 non-null  object 
 17  City                                 62107 non-null  object 
 18  State/Province                       62107 non-null  object 
 19  Country                              62107 non-null  object 
 20  Zip                                  62107 non-null  object 
 21  Currency                             62107 non-null  object 
 22  Memo (Main)                          62107 non-null  object 
 23  Maximum of GMAX Tax Code             24189 non-null  object 
 24  Maximum of NetSuite Tax Item         59815 non-null  object 
 25  Maximum of Coupa Tax Code            0 non-null      float64
 26  Maximum of External System Tax Code  0 non-null      float64
 27  Maximum of Tax Code (Consolidated)   59815 non-null  object 
 28  FOP Type                             62107 non-null  object 
 29  Sum of Assets                        60680 non-null  float64
 30  Sum of Accounts Payable              3741 non-null   float64
 31  Sum of Other Liabilities             57066 non-null  float64
 32  Sum of Income                        60290 non-null  float64
 33  Sum of Expense                       300 non-null    float64
 34  Sum of VAT                           56269 non-null  float64
dtypes: float64(8), object(27)
memory usage: 16.6+ MB

1 Ответ

0 голосов
/ 11 мая 2020

Если кто это читает, значит, я нашел ответ. В моем синтаксисе нет ничего плохого, но проблема заключается в самом файле CSV. Причина, по которой pandas считывает столбец «Максимум связанного счета-фактуры» как 62107, не равный нулю, заключается в том, что в каждую строку этого столбца встроен пробел. Единственное, что я увидел сначала, это пустые строки, но это было неточно. Итак, я призываю вас проверить файл CSV, чтобы избежать трудоемких усилий по решению таких сложных проблем.

И это решение для строки кода 4:

(~vat['Maximum of Linked Invoice'].isin([np.nan, ' '])
...