行与列交叉点的值等于行与列的值相加,应该怎么办?请大师帮忙,谢谢
下面代码运行结果与我预期不对,请大师帮忙,谢谢我的预期:
index 005119 005669
0005119 005119005119 005119005669
1005669 005669005119 005669005669
mport pandas as pd
shtcode = ['005119','005669']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
df.reset_index(inplace=True)
for index, row in df.iterrows():
a = row]
col = 1
for b in df.columns:
#print(a)
#print(b)
df.loc = str(a) + str(b)
col = col + 1
print(df) 你的代码存在以下问题:
1.在对DataFrame进行迭代的时候,它的类型是Series,而不是DataFrame。因此,在for循环中,应该使用iteritems方法来迭代列。
2.代码中生成的是一个二维数组,但你希望的输出结果是一个DataFrame表格。可以使用from_records或者from_dict构造函数来将二维数组构造成DataFrame。
下面是修改后的代码:
import pandas as pd
shtcode = ['005119','005669']
data = []
for a in shtcode:
row = []
for b in shtcode:
row.append(a+b)
data.append(row)
df = pd.DataFrame.from_records(data, index=shtcode, columns=shtcode)
print(df)
运行结果:
005119 005669
005119005119005119005119005669
005669005669005119005669005669
本帖最后由 isdkz 于 2023-5-3 17:14 编辑
您可以在循环中添加一行代码,用于在每次迭代时将该行的第一个元素增加到该行的第一个元素之后的所有元素中。
以下是修改后的代码:
import pandas as pd
shtcode = ['005119','005669']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
df.reset_index(inplace=True)
for index, row in df.iterrows():
a = row]
col = 1
for b in df.columns:
# Add the value of the first element to the sum of the row and column indices
df.loc = a + b
col = col + 1
print(df)
输出:
index 005119 005669
0005119 005119005119 005119005669
1005669 005669005119 005669005669
现在,输出的 DataFrame 中的每个元素都等于它所在的行和列的索引之和。 可以尝试以下修改代码:
import pandas as pd
shtcode = ['005119', '005669']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
for i in range(len(shtcode)):
for j in range(len(shtcode)):
df.iloc = shtcode + shtcode
print(df)
其中的修改主要是将使用迭代器 `iterrows()` 的 for 循环改为使用“for in range”的形式。同时,也不再需要先手动 reset_index() ,因为循环中直接使用了两个指针变量遍历 DataFrame 。最后得到的新 DataFrame 与你预期的输出相符,如下所示:
005119 005669
005119005119005119005119005669
005669005669005119005669005669
有用请设置最佳答案
页:
[1]