我试图使用列表理解来迭代数据,并使用iloc为位置设置一个新的值。我已经证实它正在正确地迭代。
import pandas as pd
import numpy as np
df = pd.DataFrame([np.arange(10)]*10)
#working
for i in range(10):
    for j in range(10):
        df.iloc[i,j] = 0+i
#not working 
[df.iloc[i,j] = 5 for i in range(10) for j in range(10)]有人能解释一下为什么上面的话行不通吗?或者是什么?
发布于 2019-11-23 19:31:59
您在listcomp中做赋值语句df.iloc[i,j] = 5,所以它不起作用。df.iloc[i,j] = 5不返回让listcomp创建列表的任何内容,listcomp不允许语句。您需要在listcomp之外的辅助语句。你的列表可能会改变到这个
df[:] = [[5 for j in range(10)] for i in range(10)]
Out[17]:
   0  1  2  3  4  5  6  7  8  9
0  5  5  5  5  5  5  5  5  5  5
1  5  5  5  5  5  5  5  5  5  5
2  5  5  5  5  5  5  5  5  5  5
3  5  5  5  5  5  5  5  5  5  5
4  5  5  5  5  5  5  5  5  5  5
5  5  5  5  5  5  5  5  5  5  5
6  5  5  5  5  5  5  5  5  5  5
7  5  5  5  5  5  5  5  5  5  5
8  5  5  5  5  5  5  5  5  5  5
9  5  5  5  5  5  5  5  5  5  5但是,我想这只是一个您用来展示问题的例子,因为有更好的方法来创建这样的dataframe。
https://stackoverflow.com/questions/59011286
复制相似问题