|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 futui 于 2023-5-3 17:33 编辑
下面是我的期望,运算结果保持在矩阵的一个三角形内,应如何修改我的代码?请大师帮忙,谢谢
index 11 22 33
0 11 1 1122 1133
1 22 1 2233
2 33 1
import pandas as pd
shtcode = ['11','22','33']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
df.reset_index(inplace=True)
for index, row in df.iterrows():
a = row[df.columns[0]]
for b in df.columns[1:]:
if a == b:
df.loc[index, b] = 1
else:
df.loc[index, b] = a + b
print(df)
您可以在循环时加一个判断来保持结果在矩阵的一个三角形内。具体方法是:对于每个行号大于等于列号的元素,进行运算并赋值,否则直接跳过。以下是修改后的代码:
复制代码
- import pandas as pd
- shtcode = ['11','22','33']
- df = pd.DataFrame(0, index=shtcode, columns=shtcode)
- for i in range(len(shtcode)):
- for j in range(i, len(shtcode)):
- a = shtcode[i]
- b = shtcode[j]
- if a == b:
- df.loc[a, b] = 1
- else:
- df.loc[a, b] = a + b
- print(df)
复制代码
输出结果如下,满足要求:
11 22 33
11 1 1122 1133
22 1 2233
33 1
|
|