我有33.3万行x 57列的数据。
在某些列中,有一个我想用字典翻译的数据。 我已经完成翻译,但是现在我想将翻译后的数据写回到我的数据集中。
我在保存for循环的元组输出时遇到问题。
我正在使用元组来创建良好的翻译。 .join
和.append
在我的情况下不起作用。我在很多情况下都尝试过,但没有成功。
寻找任何建议。
data = pd.read_csv(filepath, engine="python", sep=";", keep_default_na=False)
for index, row in data.iterrows():
row["translated"] = (tuple(slownik.get(znak) for znak in row["1st_service"]))
我只想在print(data["1st_service"]
中查看翻译后的数据,而不是for循环之前的上一个数据。
答案 0 :(得分:0)
首先,如果您的csv还没有“翻译”列,则必须添加它:
import numpy as np
data['translated'] = np.nan
问题是您要写入的row
对象只是数据框的视图,而不是数据框本身。另外,如果我了解自己在做什么,那么对于列表理解,您将缺少方括号。因此,将您的最后一行更改为:
data.loc[index, "translated"] = tuple([slownik.get(znak) for znak in row["1st_service"]])
您将在该单元格中写入一个元组。
将来,发布确切的错误消息非常有帮助!
答案 1 :(得分:0)
我已经在工作代码下面对其进行管理:
data = pd.read_csv(filepath, engine="python", sep=";", keep_default_na=False)
data.columns = []
slownik = dict([ ])
trans = ' '
for index, row in data.iterrows():
trans += str(tuple([slownik.get(znak) for znak in row["1st_service"]]))
data['1st_service'] = trans.split(')(')
data.to_csv("out.csv", index=False)
你能告诉我做得好吗? 也许有更快的方法吗? 我正在for循环中的12列中这样做,如图所示。