0

我正在尝试遍历数据框中的项目并更新当前行。

我正在迭代(而不是使用 df.apply ),因为我需要根据数据框中的值处理文件。注意:由于各种原因,我不想在这里使用 df.apply。

df是数据框

for key,item in df.iterrows():
    df.xs(key)['downloaded']=True

如果我做

df[:5]

“已下载”字段尚未更新(显示为 False)。我怎样才能让它正确更新?

基本上我想要做的是更新给定键的单个列值。

4

2 回答 2

4

正如@Phillip Cloud 指出的那样,loc更适合这份工作。如果您将键指定为元组,您也可以设置多索引。

In [2]: mi = DataFrame(dict(
         A = np.arange(5).astype(np.float64), 
         B = np.arange(5).astype(np.int64)),
            index=MultiIndex.from_tuples(tuple(zip(*[['bar','bar','baz','baz','baz'],['one','two','one','two','three']])),names=['first','second']))

In [3]: mi
Out[3]: 
              A  B
first second      
bar   one     0  0
      two     1  1
baz   one     2  2
      two     3  3
      three   4  4

In [4]: mi.loc[('baz','two'),'B'] = -5

In [5]: mi
Out[5]: 
              A  B
first second      
bar   one     0  0
      two     1  1
baz   one     2  2
      two     3 -5
      three   4  4
于 2013-09-10T01:44:39.833 回答
0

xs()默认情况下会创建数据的副本,因此要修改原始数据,您应该通过copy=False

for key,item in df.iterrows():
    df.xs(key, copy=False)['downloaded']=True
于 2013-09-10T01:10:32.173 回答