Как отбрасывать строки без плавающих строк и столбцов в документе Excel с пандами Python - PullRequest
1 голос
/ 12 октября 2019

Я редактирую файл Excel, дошел до того, что я пытаюсь отбросить все строки без чисел. Как показано ниже:


   drinks|  period| Day1|   Day2|   Day3|   Day4|   Day5|   Day6|

1   Beer1|  weekly|                     
5   Beer2|  weekly|                     
9   Beer3|  weekly| 8.0 |    6.6|    4.8|    6.9|    8.3|    8.5|

10  Beer4|  Monthly 8.0 |    6.9|    5.8|    6.7|    6.8|    6.7|

11  Beer5|  quaterly|7.3|    7.3|    7.3|    7.3|    7.3|    7.3|

13  Beer6|  weekly|                     
17  Beer7|  weekly|                     
21  Beer8|  weekly|                     
25  Beer9|  weekly|                     
29  Beer0|  weekly|          8.2|           
33  Beer1|  weekly| 6.2|                    
34  Beer2|  weekly| 6.2|     6.2|     6.2|   6.2|     6.3|    6.3|

35  Beer3|  Month | 5.4|     5.4|     5.4|   5.4|     5.4|    5.4|

37  Beer4|  weekly|                     
41  Beer5|  weekly|          8.3|     8.2|   8.2|

42  Beer6|  weekly|                          8.5|


45  Beer7|  weekly|                     
49  Beer8|  weekly|                   8.5|      
53  Beer9|  weekly|                          8.2|

Я получаю неправильный результат. Может кто-нибудь помочь?

import pandas as pd

import numpy as np

excel_file_1 = 'DRINKS.xlsx'
df = pd.read_excel(excel_file_1)

df.dropna(axis=0,how='all')

print (df)

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

    drinks| period| Day1|   Day2|   Day3|   Day4|   Day5|   


9   Beer3|  weekly| 8.0|    6.6|    4.8|    6.9|    8.3|    
10  Beer4|  Monthly|8.0|    6.9|    5.8|    6.7|    6.8|    
11  Beer5|  quaterly|7.3|   7.3|    7.3|    7.3|    7.3|

29  Beer1|  weekly|         8.2 |                
33  Beer2|  weekly| 6.2|                             
34  Beer3|  weekly| 6.2|    6.2|    6.2|    6.2|    6.3|    
35  Beer4|  Monthly|5.4|    5.4|    5.4|    5.4|    5.4|    
41  Beer5|  weekly| 8.3|    8.2|    8.2|         
42  Beer6| weekly|                      8.5 8.5  
49  Beer8|  weekly|             8.5              
53  Beer9|  weekly|                     8.2 8.4  

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Я наконец-то получил требуемый результат ....

import pandas as pd
import numpy as np
excel_file_1 = 'Beer.xlsx'
df1 = pd.read_excel(excel_file_1)
df1['Day1'].replace('','nan', inplace=True)
df1['Day2'].replace('','nan', inplace=True)
df1['Day3'].replace('','nan', inplace=True)
df1['Day4'].replace('','nan', inplace=True)
df1['Day5'].replace('','nan', inplace=True)
df1[Day6'].replace('','nan', inplace=True)


condition =df1 [(df1['Day1'] == 'nan') & (df1['Day2'] == 'nan') & (df1['Day3'] == 'nan') & (df1['Day4'] == 'nan') & (df1['Day5'] == 'nan') & (df1['Day6'] == 'nan')].index 

df1.drop(condition , inplace=True)

print(df1)
enter code here
0 голосов
/ 12 октября 2019

Вы можете попробовать это

m=df.stack().str.contains('\d').any(level=0)
n=df.stack().str.contains('\w+').all(level=0)
df[m|n]

Выход

    drink   cost    places    sold
2   beer                 2      6
3   pepsi   4.5     New Jersy   2
4   Fruit   3       Vancouver   Nan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...