Удалить строку, когда ячейка пуста - PullRequest
2 голосов
/ 13 июля 2020

Я пытаюсь удалить строку из таблицы «calories.xlsx», когда ячейка пуста, и отправить все данные, кроме пустых строк, в электронную таблицу «destination.xlsx». Код ниже показывает, как далеко я продвинулся. Но все же он не удаляет строки с пустым значением на основе столбца калорий.

Это набор данных:

Набор данных

Как я могу разработать свой код для решения этой проблемы?

import pandas as pd

FileName = 'calories.xlsx'
SheetName = pd.read_excel(FileName, sheet_name = 'Sheet1')

df = SheetName

print(df)

ListCalories = ['Calories']

print(ListCalories)

for Cell in ListCalories:
    if Cell == 'NaN':
        df.drop[Cell]

print(df)

df.to_excel('destination.xlsx')

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Создать фиктивные данные

df=pd.DataFrame({
    'calories':[2306,3256,1235,np.nan,3654,3256],
    'Person':['person1','person2','person3','person4','person5','person6',]
    })

Печать фрейма данных

    calories    Person
0   2306.0  person1
1   3256.0  person2
2   1235.0  person3
3           person4
4   3654.0  person5
5   3256.0  person6

удалить строку, если значение калорий отсутствует

new_df=df.dropna(how='any',subset=['calories'])

Результат

    calories    Person
0   2306.0     person1
1   3256.0     person2
2   1235.0     person3
4   3654.0     person5
5   3256.0     person6

сохранить как excel

new_df.to_excel('destination.xlsx',index=False)
0 голосов
/ 13 июля 2020

ваш ListCalories содержит только один элемент Calories, я предполагаю, что это была опечатка. то, что вы пытаетесь сделать, вероятно, это

import pandas as pd

FileName = 'calories.xlsx'
df = pd.read_excel(FileName, sheet_name = 'Sheet1')

print(df)

# you don't need this, but I kept it for you
ListCalories = df['Calories']
print(ListCalories)

clean_df = df[df['Calories'].notna()] # this will only select the rows that doesn't have na value in the Calories column

print(clean_df)

clean_df.to_excel('destination.xlsx')

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.notna.html

...