鱼C论坛

 找回密码
 立即注册
查看: 1857|回复: 2

[已解决]给数据帧多加一个标题的问题,求大师帮忙,谢谢

[复制链接]
发表于 2023-5-3 22:22:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

             AA    BB         CC
             11    22          33
AA  11   1    1122        1133
BB  22         1             2233
CC  33                        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[i]
        b = shtcode[j]
        if a == b:
            df.loc[a, b] = 1
        else:
            df.loc[a, b] = a + b

print(df)
最佳答案
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[i]
        b = shtcode[j]
        if a == b:
            df.loc[a, b] = 1
        else:
            df.loc[a, b] = a + b

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

print(df)

运行以上代码后,您将得到如下结果:
      AA    BB    CC
      11    22    33
AA 11  1  1122  1133
BB 22        1  2233
CC 33              1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i]
        b = shtcode[j]
        if a == b:
            df.loc[a, b] = 1
        else:
            df.loc[a, b] = a + b

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

print(df)

运行以上代码后,您将得到如下结果:
      AA    BB    CC
      11    22    33
AA 11  1  1122  1133
BB 22        1  2233
CC 33              1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i]
        b = shtcode[j]
        if a == b:
            df.loc[a, b] = 1
        else:
            key_a = shtcode_to_key[a]
            key_b = shtcode_to_key[b]
            df.loc[a, b] = key_a + key_b

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

print(df)
```

代码输出的数据帧为:

```
     AA   BB   CC
   AA  11  1122 1133
   BB      22  2233
   CC           33
```

代码解释如下:

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


希望对你有所帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 09:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表