Как я могу условно удалить столбцы из моего фрейма данных без использования циклов for? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь отфильтровать кадр данных AppleStore.csv по цене. Я хочу создать «новый» фрейм данных с условием, что будут включены только бесплатные приложения. Ниже приведен код, который я использовал для фильтрации того же условия на фрейме данных приложения googleplaystore.csv, и он работал нормально.

import numpy as np


df_A = pd.read_csv("AppleStore.csv") 
df_G = pd.read_csv('googleplaystore.csv')

df_G.dropna(axis = 0, how = "any", inplace = True)

df_gg = df_G[df_G.Price == '0'] # df_gg is the new google apps df with only free apps

df_apple = df_A[df_A.price == '0.0'] 

Когда я запускаю приведенный выше код, он возвращает только строку заголовка столбца и сообщение об ошибке :

C:\Users\Dan\anaconda3\lib\site-packages\pandas\core\ops\array_ops.py:253: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  res_values = method(rvalues)

Я совершенно не уверен, что делать. Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

Проблема в том, что есть цифры c столбцы или смешанные цифры c со строками. Поэтому попробуйте сравнить по 0 вместо строки '0', '0.0', если все столбцы являются цифрами c:

df_gg = df_G[df_G.Price == 0] 
df_apple = df_A[df_A.price == 0] 

Если смешанные типы из-за замены отсутствующих значений на 0 цифра c, попробуйте преобразовать в цифры c столбцы:

df_G.Price = df_G.Price.astype(float)
df_A.Price = df_A.Price.astype(float)

, а затем сравнить:

df_gg = df_G[df_G.Price == 0] 
df_apple = df_A[df_A.price == 0] 
1 голос
/ 16 апреля 2020

Это потому, что вы сравниваете строку с целочисленным или плавающим столбцом:

df1 = pd.DataFrame({'price' : [0,1]})

df1[df1.price == '0']

 FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  res_values = method(rvalues)

Где как:

df1[df1.price == 0]


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