【问题标题】:Append only unlike data from one .csv to another .csv仅将不同的数据从一个 .csv 附加到另一个 .csv
【发布时间】:2018-10-07 07:42:50
【问题描述】:

我已经设法使用 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。

我怎样才能做到这一点?

我有以下代码可以工作,除了它唯一没有做的是将结果过滤到

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)

【问题讨论】:

  • 你如何定义“不一样”?您希望它选择的标准是什么?
  • 我不希望将匹配

标签: python pandas csv


【解决方案1】:

有几种不同的方法可以解决这个问题,一种是读取过滤后的数据集,将新数据集附加到内存中,然后像这样删除重复项:

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)

【讨论】:

  • 运行后,出现以下错误: Traceback (most recent call last): File "C:\Users\Administrator\Desktop\New.py", line 1, in history_df = pd.read_csv('c:\speedtestfilteronly.csv', header=None) NameError: name 'pd' is not defined
  • 您的会话中似乎没有导入熊猫? import pandas as pd
  • 你有最适合初学者的病人。我为此感谢你!当我在顶部使用 import pandas as pd 运行代码时,我收到此错误: Traceback (most recent call last): File "C:\Users\Administrator\Desktop\New.py", line 3, in master_df = pd.concat([history_df, df], axis=0) NameError: name 'df' is not defined 另外,请原谅我,但代码是否还包含
  • 我们曾经都是初学者!这实际上是除了您现有的代码之外,我会尝试在我的回答中澄清
  • 您仍然需要使用此代码检查几件事,例如文件是否存在以及是否按预期读取列(您可能以前保存过索引,也可能没有保存过索引)列),但它应该让你上路
猜你喜欢
  • 2012-03-02
  • 2019-07-11
  • 2020-07-21
  • 1970-01-01
  • 2019-01-17
  • 2014-02-26
  • 1970-01-01
  • 2023-03-10
  • 2019-06-19
相关资源
最近更新 更多