我设法将Python与speedtest-cli软件包结合使用来对我的Internet速度进行速度测试。我每15分钟运行一次,并将结果附加到一个名为“ speedtest.csv”的.csv文件中。然后,我每隔12小时将这个.csv文件通过电子邮件发送给我,其中包含大量数据。
我只对保持返回速度低于13mbps下载速度的数据行感兴趣。使用以下代码,我可以过滤此数据并将其附加到我称为speedtestfilteronly.csv
的第二个.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次,则在“ speedtestfilteronly.csv”文件中会收到相同的4组附加数据。
我希望仅将从speedtest.csv不同的行追加到speedtestfilteronly.csv。
我该如何实现?
我有以下代码可以工作,除了它唯一没有做的就是将结果过滤到<13000000.0 mb / s:还有其他想法吗?
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)
答案 0 :(得分:2)
有几种不同的处理方法,一种方法是读取过滤后的数据集,将新的数据集添加到内存中,然后像这样删除重复项:
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)