Как вставить столбец данных в pandas и удалить конкретную строку? - PullRequest
0 голосов
/ 10 июля 2019

Это мой csv-файл:

A  B  C  D
0  1  5  5
1  0  3  0
0  0  0  0
2  1  3  4 

Я хочу проверить столбец B, если я громко 0 Я удаляю всю строку, так что это то, что мне нужно в качестве вывода:

A  B  C  D
0  1  5  5
2  1  3  4

Я попробовал этот код:

import pandas as pd
df=pd.read_csv('Book1.csv', sep=',', error_bad_lines=False, dtype='unicode')
for index, row in df.iterrows():
    if row['B'] == 0:
        df.drop(row,index=False)
df.to_csv('hello.csv')

Он вернется для меня:

   A  B  C  D
0  0  1  5  5
1  1  0  3  0
2  0  0  0  0
3  2  1  3  4

Он не удалил ничего, я не знаю, в чем проблема Любая помощь, пожалуйста!

1 Ответ

2 голосов
/ 10 июля 2019

Вы можете проверить, какие строки в B не равны 1, и выполнить логическое индексирование с результатом:

df[df.B.ne(0)]

   A  B  C  D
0  0  1  5  5
3  2  1  3  4

Обратите внимание, что в вашем подходе, чтобы отбросить заданную строку, вам нужно указать индекс, поэтому вы должны делать что-то вроде:

for index, row in df.iterrows():
    if row['B'] == 0:
        df.drop(index, inplace=True)
df.to_csv('hello.csv')

Также не забудьте переназначить результат после удаления строки. Это можно сделать, установив inplace на True или переназначив обратно на df.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...