Добавить только в отличие от данных из одного .csv в другой .csv - PullRequest
0 голосов
/ 01 октября 2018

Мне удалось использовать Python с пакетом speedtest-cli для запуска speedtest из моей скорости интернета.Я запускаю это каждые 15 минут и добавляю результаты в файл .csv, который я называю "speedtest.csv".Затем я получаю этот файл .csv по электронной почте мне каждые 12 часов, что является большим количеством данных.

Меня интересует только сохранение строк данных, которые возвращают скорость загрузки менее 13 Мбит / с.Используя следующий код, я могу отфильтровать эти данные и добавить их во второй файл .csv, который я называю speedtestfilteronly.csv.

import pandas as pd
df = pd.read_csv('c:\speedtest.csv', header=0)
df = df[df['Download'].map(lambda x: x < 13000000.0,)]
df.to_csv('c:\speedtestfilteronly.csv', mode='a', header=False)

Проблема теперь в том, что он добавляет все строки, которые соответствуют критериям моего фильтра, каждый раз, когда я запускаю этот код.Поэтому, если я запускаю этот код 4 раза, я получаю те же 4 набора добавленных данных в файле "speedtestfilteronly.csv".

Я хочу добавлять только отличающиеся строки из speedtest.csv в speedtestfilteronly.csv.

Как мне этого добиться?

У меня есть следующий код для работы, за исключением того, что он не выполняет фильтрацию результатов до <13000000.0 Мбит / с: Есть еще идеи?</p>

import pandas as pd

df = pd.read_csv('c:\speedtest.csv', header=0)  
df = df[df['Download'].map(lambda x: x < 13000000.0,)]

history_df = pd.read_csv('c:\speedtest.csv')
master_df = pd.concat([history_df, df], axis=0)
new_master_df = master_df.drop_duplicates(keep="first")
new_master_df.to_csv('c:\emailspeedtest.csv', header=None, index=False)

1 Ответ

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

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

import pandas as pd

df = pd.read_csv('c:\speedtest.csv', header=0)
df = df[df['Download'].map(lambda x: x < 13000000.0,)]

history_df = pd.read_csv('c:\speedtestfilteronly.csv', header=None)
master_df = pd.concat([history_df, df], axis=0)
new_master_df = master_df.drop_duplicates(keep="first")
new_master_df.to_csv('c:\speedtestfilteronly.csv', header=None, index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...