如何保存元组输出形式以循环到DataFrame Python

时间:2019-04-10 21:10:27

标签: python-3.x pandas

我有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循环之前的上一个数据。

2 个答案:

答案 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列中这样做,如图所示。