Чтение CSV-файла с пандами - PullRequest
0 голосов
/ 03 июня 2018

введите описание изображения здесь У меня есть CSV-файл с 2 столбцами, который является текстовым и логическим (да / нет), где я пытаюсь поместить все положительное значение в 1 файле в 1 файл и отрицательноеодин в других.Вот что я попробовал:

df = pd.read_csv('text_trait_with_binary_EXT.csv','rb',delimiter=',',quotechar='"')

#print(df)
df.columns = ["STATUS", "xEXT"]

positive = []
negative = []

for line in df:
    text = line[0].strip()

    if line[1].strip() == "y":
        positive.append(text)
    elif line[1].strip() == "n":
        negative.append(text)

print(positive)
print(negative)

И когда я запускаю это, просто выдаю пустой список!

Я новичок в использовании панд, так что если кто-то из вас может помочь, это было бы здорово.

1 Ответ

0 голосов
/ 03 июня 2018

Как прокомментировали другие, почти всегда есть лучший подход, чем использование итераций в Pandas.В нем много встроенных функций, помогающих избежать циклов.

Если я правильно понимаю ваши намерения, чтобы вы взяли значения из столбца 1 (с именем 'STATUS'), разделите их в зависимости от того, соответствует лизначение в столбце 2 (с именем 'xEXT') равно 'y' или 'n', и сгенерируйте два списка, содержащих значения столбца 1, должно работать следующее (для использования после первых двух строк кода, которые вы опубликовали):

positive = df.loc[df['xEXT'].str.strip() == 'y', 'STATUS'].tolist()
negative = df.loc[df['xEXT'].str.strip() == 'n', 'STATUS'].tolist()

Вот ссылка на документацию по loc, которая полезна для подобных проблем.

Приведенное выше решение предполагает, что ваши данные были прочитаны вправильно.Если это не работает для вас, сделайте, как другие прокомментировали, и добавьте небольшую выборку ваших данных, чтобы мы могли опробовать наши предлагаемые решения.

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