有没有办法将熊猫细胞内两个不同的 n * n 个数据帧的相应单元格的内容连接起来?

Is there a way to concatenate the content of the respective cells of two different n * n data-frames within cells in pandas?

提问人:Sudoh 提问时间:9/13/2022 更新时间:9/13/2022 访问量:22

问:

有没有办法将熊猫细胞两个不同的 n * n 个数据帧的相应单元格的内容连接起来?

例如:假设我有两个数据帧和 。df1df2

df1看起来像这样:

指数 Score_1 Score_2
Family_1 123 456
Family_2 789 1011

df2看起来像这样:

指数 Score_1 Score_2
Family_1 一个 B
Family_2 C D

我想制作第三个数据帧,从中获取每个 n * n 个单元格,并将其与相应 n * n 个单元格的内容连接起来,并制作第三个数据帧,如下所示:df1df2

指数 Score_1 Score_2
Family_1 答:123 乙:456
Family_2 C:789 分:1011

只是为了确保:一个表有字符串,另一个表有数字,但我想做字符串连接,所以使用是必要的。str()

pd.concat()像这样连接整个数据帧:

指数 Score_1 Score_2 Score_1 Score_2
Family_1 一个 B 123 456
Family_2 C D 789 1011

我正在尝试叠加单元格。

我试着从头开始做,大致是这样的:zipintertuples

for i,j in zip(df1.itertuples(),df2.itertuples()):
    n=1
    while n < len(i):
        print(i[n], ":", j[n])
        n = n + 1
    print('\n')

其输出如下:

答:123

乙:456

C:789

分:1011

我想我可以将其重新路由到字典或中间文件并从那里进行重塑,但这似乎有点笨拙。有没有更有效的方法可以做到这一点?

Python Pandas 数据帧

评论


答:

2赞 mozway 9/13/2022 #1

您可以暂时将“Index”设置为索引,转换为字符串,然后:add

out = (df2
 .set_index('Index') # skip if already index
 .add(':'+df1.set_index('Index').astype(str))
 .reset_index()      # skip if already index
)

输出:

      Index Score_1 Score_2
0  Family_1   A:123   B:456
1  Family_2   C:789  D:1011

如果“索引”已经是索引:

out = df2.add(':'+df1.astype(str))

输出:

         Score_1 Score_2
Index                   
Family_1   A:123   B:456
Family_2   C:789  D:1011