替换循环中数据帧的单元格

时间:2018-01-03 20:39:09

标签: python for-loop replace filter

我正在研究这个问题filter iteration using FOR。我想知道如何替换生成的每个csv文件中year列的最后一个单元格。假设我想用当前年份(2018)替换每个cvs文件的最后一个单元格(列year)。我做了以下代码:

for i, g in df.sort_values("year").groupby("Univers", sort=False):
    for y in g.iloc[-1, g.columns.get_loc('year')]:
        y = 2018
    g.to_csv('{}.xls'.format(i))

但是我对任何更改都有相同的列。任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:0)

问题似乎有两个方面:首先找到最后一行的索引然后将其替换为(last_row_idx," year")。

试试这个

for i, g in df.sort_values("year").groupby("Univers", sort=False):
    last_row_idx = g.tail(1).index.item()  # first task: find index
    g.at[last_row_idx, "year"] = 2018      # replace
    g.to_csv('{}.xls'.format(i))

或者,也可以使用g.set_value(last_row_idx, "year", 2018)来设置特定单元格的值。

参考

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.set_value.html

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.at.html

Set value for particular cell in pandas DataFrame

Get index of a row of a pandas dataframe as an integer