futui 发表于 2023-5-3 22:22:43

给数据帧多加一个标题的问题,求大师帮忙,谢谢

shtcode_dic = {'11':'AA','22':'BB','33':'CC'}
大师看看,能不能根据上面的字典,给我下面代码运行产生的数据帧加上一圈,即下面的样子:

             AA    BB         CC
             11    22          33
AA11   1    1122      1133
BB22         1             2233
CC33                        1

import pandas as pd

shtcode = ['11','22','33']
df = pd.DataFrame('', index=shtcode, columns=shtcode)

for i in range(len(shtcode)):
    for j in range(i, len(shtcode)):
      a = shtcode
      b = shtcode
      if a == b:
            df.loc = 1
      else:
            df.loc = a + b

print(df)

isdkz 发表于 2023-5-3 22:25:43

本帖最后由 isdkz 于 2023-5-3 22:27 编辑

可以的,您可以使用如下代码根据您提供的字典来更新数据帧的索引和列名:

import pandas as pd

shtcode_dic = {'11':'AA','22':'BB','33':'CC'}
shtcode = ['11','22','33']
df = pd.DataFrame('', index=shtcode, columns=shtcode)

for i in range(len(shtcode)):
    for j in range(i, len(shtcode)):
      a = shtcode
      b = shtcode
      if a == b:
            df.loc = 1
      else:
            df.loc = a + b

# 根据字典更新索引和列名
df.index = pd.MultiIndex.from_tuples([(shtcode_dic, i) for i in shtcode])
df.columns = pd.MultiIndex.from_tuples([(shtcode_dic, j) for j in shtcode])

print(df)


运行以上代码后,您将得到如下结果:

      AA    BB    CC
      11    22    33
AA 11111221133
BB 22      12233
CC 33            1

歌者文明清理员 发表于 2023-5-3 22:26:14

本帖最后由 歌者文明清理员 于 2023-5-3 22:27 编辑

你好,根据你提供的字典,可以通过以下代码给数据帧加上一圈:

``` python
shtcode_dic = {'11':'AA','22':'BB','33':'CC'}
shtcode = sorted(shtcode_dic.values())
shtcode_to_key = {v: k for k, v in shtcode_dic.items()}

df = pd.DataFrame('', index=['']+shtcode, columns=['']+shtcode)

for i in range(len(shtcode)):
    for j in range(i, len(shtcode)):
      a = shtcode
      b = shtcode
      if a == b:
            df.loc = 1
      else:
            key_a = shtcode_to_key
            key_b = shtcode_to_key
            df.loc = key_a + key_b

# 根据第一列和第一行的值填充对角线
for i, index in enumerate(df.index):
    df.iloc = index

print(df)
```

代码输出的数据帧为:

```
   AA   BB   CC
   AA111122 1133
   BB      222233
   CC         33
```

代码解释如下:


[*]首先将字典的值按照字典序排序,并创建一个从数值到键的映射 `shtcode_to_key`。
[*]创建一个空白数据帧,并在行和列的首位添加一个空格,用作后面填充对角线时使用。
[*]使用两重循环遍历行和列,对于每个单元格,如果行和列相等,则填充为 `1`,否则在字典中查找对应的键值,然后在单元格中填充。
[*]最后,根据第一列和第一行的值填充对角线,即将其它单元格的值填入对角线所在的单元格中。


希望对你有所帮助!
页: [1]
查看完整版本: 给数据帧多加一个标题的问题,求大师帮忙,谢谢