Столбец Python «Безымянный» продолжает появляться - PullRequest
0 голосов
/ 10 октября 2018

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

пример выходных столбцов после запуска 3 раза -

  Unnamed: 0  Unnamed: 0.1            Subreddit  Appearances

вот мой код.для каждой строки столбцы «Безымянный» просто увеличиваются на 1.

df = pd.read_csv(Location)
while counter < 50:
    #gets just the subreddit name
    e = str(elem[counter].get_attribute("href"))
    e = e.replace("https://www.reddit.com/r/", "")
    e = e[:-1]
    if e in df['Subreddit'].values:
        #adds 1 to Appearances if the subreddit is already in the DF
        df.loc[df['Subreddit'] == e, 'Appearances'] += 1
    else:
        #adds new row with the subreddit name and sets the amount of appearances to 1.
        df = df.append({'Subreddit': e, 'Appearances': 1}, ignore_index=True)
    df.reset_index(inplace=True, drop=True)
    print(e)
    counter = counter + 2
#(doesn't work) df.drop(df.columns[df.columns.str.contains('Unnamed', case=False)], axis=1)

При первом запуске я запускаю его с чистым CSV-файлом, он отлично работает, но каждый раз после этого появляется другой «Безымянный».колонка обувается.Я просто хотел, чтобы столбцы «Subreddit» и «Внешний вид» отображались каждый раз.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Другим решением было бы прочитать ваш CSV с атрибутом index_col=0, чтобы не учитывать столбец индекса: df = pd.read_csv(Location, index_col=0).

0 голосов
/ 10 октября 2018

каждый раз, когда я запускаю свою программу (...), появляется новый столбец с именем «Безымянный».

Полагаю, это из-за reset_index или, возможно, у вас есть to_csv где-то в вашем коде, как предложено @jpp.Для исправления to_csv обязательно используйте index=False:

df.to_csv(path, index=False)

В общем, вот как я бы подошел к вашей задаче.Для этого нужно сначала сосчитать все появления (обозначенные e), и из этих подсчетов создать новый фрейм данных для объединения с тем, который у вас уже есть (how='outer' добавляет строки, которые еще не существуют).Это позволяет избежать сброса индекса для каждого элемента, что должно избежать проблемы, а также является более производительным.

Вот код с этими мыслями:

base_df = pd.read_csv(location)
appearances = Counter()  # from collections
while counter < 50:
    #gets just the subreddit name
    e = str(elem[counter].get_attribute("href"))
    e = e.replace("https://www.reddit.com/r/", "")
    e = e[:-1]
    appearances[e] += 1
    counter = counter + 2
appearances_df = pd.DataFrame({'e': e, 'appearances': c } 
                               for e, c in x.items())
df = base_df.merge(appearances_df, how='outer', on='e')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...