【问题标题】:Applying python dictionary to column of a CSV file将python字典应用于CSV文件的列
【发布时间】:2022-01-01 23:43:26
【问题描述】:

我有一个 CSV 文件,其中包含一个用户不友好的列数据。我需要将这些数据翻译成有意义的东西。简单的查找/替换似乎很庞大,因为我要翻译的可能组合有几十个,甚至几百个。

例如:BLK = 黑色或 MNT TP = 山顶

可能有几十个甚至数百个翻译 - 我已经在 CSV 表中保存了很多翻译。问题是如何使用该字典来更改另一个 CSV 表中的值。同样重要的是要注意,这将(最终)需要每隔几分钟自行运行一次 - 而不仅仅是一次性翻译。

【问题讨论】:

  • 您能否提供一些示例输入和示例输出,以便我们了解 CSV 的格式?
  • 你的编程问题到底是什么?
  • 我需要一个 CSV 文件,其中包含一列基本上是缩写的信息并将其转换为完整的单词。例如,如果我需要“NB”变成“North Bound”,或者另一个例子是“BLND”变成“Blind”。该文件不断更新,因此我需要一个可以不断执行此操作的脚本 - 而不仅仅是一次。
  • 您的案例看起来像一个经典(关系)联接。下面的文章可能是相关的。 codespeedy.com/…

标签: python csv dictionary translate


【解决方案1】:

如果您能更详细地描述您正在处理的数据是什么,那就太好了。不过我会尽力猜测。

假设您有一个 CSV 文件,您使用 pandas 将其读入名为 df 的数据框,并使用名为 col 的“非用户友好”列。 要替换col 列中的所有值,首先,您需要一个包含所有键(原始文本)和值(新文本)的字典:

my_dict = {"BLK": "Black", "MNT TP": Mountain Top,...}

然后,将字典映射到列:

df["col"] = df["col"].map(lambda x: my_dict.get(x, x))

如果某个键出现在字典中,则将其替换为字典中新的对应值,否则保持原值。

【讨论】:

  • 好吧,这行得通!我唯一剩下的问题是它保存为原始版本(添加了行号除外)。 'df.to_csv('c:/PDW/converted.csv', header=False, mode = 'a')'
  • 实际上这行得通!我只是遇到了文件无法写入的问题!谢谢。
  • 很高兴它可以提供帮助!在您的代码中,mode='a' 表示您会将新输出附加到现有文件中。您可以在文件末尾检查,看看它是否在其中写了一些新内容。另外,你应该在上面标记我的答案(通过点击勾号),这样人们就可以知道它已经解决了。
猜你喜欢
  • 2018-11-16
  • 2018-01-14
  • 2018-07-18
  • 2018-02-18
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
相关资源
最近更新 更多