我需要根据所有列的不同列对数据框进行排序,并且我想使用循环来实现。所以我需要类似的东西:
for j in range(nC):
Elab1 = Elab1.sort_values([j, 13])
Elab1 = Elab1.reset_index(drop=True)
for i in range(L_GI-1):
if Elab1.at[i+1, j] == Elab1.at[i, j] :
Elab1.at[i+1, j+nC] = Elab1.at[i, j+nC]
L_GI
和nC
分别是我的数据框的行和列数:Elab1
,而j和13是我要使用的数据框的列位置作为排序索引。
虽然这适用于循环行,但不适用于列,因为我猜想使用方法at
,我需要它们的名称。
有没有一种方法可以代替方法at
来使用,如我的代码所示?
答案 0 :(得分:1)
只需使用iloc
而不是at
:
Elab1.iloc[i+1, j] == Elab1.iloc[i,j]
答案 1 :(得分:0)
已解决:
替代
def request():
s = requests.Session
r = s.get(url)
return r
def data(r):
soup = BeautifulSoup(r.text, 'lxml')
list = soup.select('.class')
return list
def loop(list):
n = 10
while True:
len(list) != n
if len(list) == n:
print('Lorem ipsum')
main()
else:
return len(list)
def main():
r = request()
list = data(r)
len(list) = loop(list)
if __name__ == "__main__":
main()
使用
if Elab1.at[i+1, j] == Elab1.at[i, j] :
Elab1.at[i+1, j+nC] = Elab1.at[i, j+nC]
并替换
if Elab1.iloc[i+1, j+nC] == Elab1.iloc[i, j+nC] :
Elab1.iloc[i+1, j] = Elab1.iloc[i, j]
使用
[j, 13]
其中
[columns_names_array[j], "constant_column_name"]
@LeoE最好的答案是正确的方法。