我想关联来自不同DataFram的多个列

2024-09-27 04:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

给出:

结果

| D001 | D002 | D003 | D004 | D005 |
|------|------|------|------|------|
| 3    | 5    | 3    | 4    | 4    |
| 4    | 4    | 5    | 3    | 4    |
| 5    | 4    | 5    | 5    | 3    |

个人

| Engagement Index | Manager Index | HR Index | Manager Index |
|------------------|---------------|----------|---------------|
| 3.14             | 3.78          | 4.88     | 4.21          |
| 4.15             | 4.27          | 2.89     | 4.43          |
| 4.20             | 3.89          | 3.92     | 4.65          |

我有两个数据帧resultindividual。我想从中关联result[corru col]和individual[corru with]列

corr_col = ['D001', 'D002', 'D003', 'D004', 'D005', 'D006', 'D007', 'D008']

corr_with = ['Engagement Index','Manager Index','HR Index','Leadership Index']

我试过了

for j in corr_with:
    val = []
    for i in corr_col:
        x = round(result[i].corr(individual[j]),2)
        val.append(x)

    correlation = pd.DataFrame({'Driver': corr_col, j : val})
correlation 

但这让我

| Driver | Leadership Index | 
|--------|------------------|
| D001   | 0.72             |
| D002   | 0.78             | 
| D003   | 0.75             | 
| D004   | 0.71             | 
| D005   | 0.73             | 
| D006   | 0.74             | 
| D007   | 0.76             | 
| D008   | 0.38             | 

我甚至试过

result[corr_col].corr(individual[corr_with]) 这给了我ValueError:数据帧的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

所需输出:

| Driver | Engagement Index | Manager Index | HR Index | Leadership Index |
|--------|------------------|---------------|----------|------------------|
| D001   | 0.72             | 0.64          | 0.81     | 0.67             |
| D002   | 0.78             | 0.75          | 0.80     | 0.70             |
| D003   | 0.75             | 0.69          | 0.78     | 0.69             |
| D004   | 0.71             | 0.72          | 0.73     | 0.74             |
| D005   | 0.73             | 0.71          | 0.75     | 0.76             |
| D006   | 0.74             | 0.78          | 0.68     | 0.68             |
| D007   | 0.76             | 0.78          | 0.75     | 0.80             |
| D008   | 0.38             | 0.75          | 0.69     | 0.78             |

谢谢你的时间和考虑


Tags: indexwithmanagerhrcolresultindividualcorr
1条回答
网友
1楼 · 发布于 2024-09-27 04:21:38

我认为有必要将嵌套循环中的每个列表分配给最终列表out,并将其传递给DataFrame构造函数:

out = []
for j in corr_with:
    val = []
    for i in corr_col:
        x = round(result[i].corr(individual[j]),2)
        val.append(x)
    out.append(val)

或列出理解解决方案:

out = [[round(result[i].corr(individual[j]),2) for i in corr_col] for j in corr_with]

correlation = pd.DataFrame(out, index=corr_with, columns=corr_col).T

另一个带有^{}的解决方案:

correlation = pd.concat([result.corrwith(individual[x]).round(2) for x in corr_with], 
                         axis=1, 
                         keys=corr_with)

相关问题 更多 >

    热门问题