如何将两个数据帧中的值合并为相同的行和列索引/值?

2024-06-16 09:31:06 发布

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

在以下数据帧中:

d1 = pd.read_csv('to_count.mcve.txt', sep='\t')
d1 = d1.set_index(['pos'], append=True)

       M1           M2       F1   F2
  pos                        
0 23   A,B,A,C,D    A,C,B    A    D
1 24   A,B,B,C,B    A,B,A    B    B
2 28   C,B,C,D,E    B,C      E    C

我使用下面的代码进行了一些计数:

hapX_count = pd.DataFrame()
hapY_count = pd.DataFrame()
for index, lines in d1.iterrows():
    hap_x = lines['F1']
    hap_y = lines['F2']
    x_count = lines.apply(lambda x: x.count(hap_x)/2 if len(x) > 5 else x.count(hap_x))
    y_count = lines.apply(lambda x: x.count(hap_y)/2 if len(x) > 5 else x.count(hap_y))

    hapX_count = hapX_count.append(x_count)
    hapY_count = hapY_count.append(y_count)

hapX\u计数的输出:

print(hapX_count)

         F1   F2   M1   M2
(0, 23)  1.0  0.0  1.0  1.0
(1, 24)  1.0  1.0  1.5  1.0
(2, 28)  1.0  0.0  0.5  0.0

hapY\u计数的输出:

print(hapY_count)

         F1   F2   M1   M2
(0, 23)  0.0  1.0  0.5  0.0
(1, 24)  1.0  1.0  1.5  1.0
(2, 28)  0.0  1.0  1.0  1.0

如何用逗号组合这些数据帧中的值(具有相同的columnrow索引)

预期输出如下:

         F1       F2       M1       M2
(0, 23)  1.0,0.0  0.0,1.0  1.0,0.5  1.0,0.0
same for other lines...

谢谢你


Tags: 数据indexcountf2f1d1pd计数
1条回答
网友
1楼 · 发布于 2024-06-16 09:31:06

您可以继续在for循环中进行连接。但是,如果您打算在事实发生后进行串联,并希望它们用逗号分隔,那么我假设您可以将数据变成字符串而不是浮点数。如果是这种情况,并且您知道列和索引是相同的并且顺序相同,则可以执行以下操作:

df = hapX_count.astype(str) + ',' + hapY_count.astype(str)

相关问题 更多 >