【发布时间】:2022-01-25 18:30:29
【问题描述】:
我正在尝试创建一个函数来遍历数据框中的每一行以查找匹配项,然后将这些匹配项附加到同一行中,将数据从长格式更改为宽格式。 df.pivot 没有成功,这是我的直觉,所以我需要尝试其他方法。
for x in df.itertuples():
for y in df.itertuples():
if x.MDS==y.MDS:
这是我用于识别所有匹配项的嵌套 for 循环
pd.Dataframe=({'MDS': {106: 2, 107: 10, 108: 100, 109: 500, 110: 2}, 'LSR': {106: '3-4', 107: '3-4', 108: '3-4', 109: '3-4', 110: '3-6'}, 'Small State Wins': {106: 4150, 107: 5210, 108: 5405, 109: 5625, 110: 3893}})
这是我的示例数据框,或者只是它的快照。我想在 MDS 列中找到匹配项,当有匹配项时,将该观察结果放入与原始匹配项对应的新列中。
MDS LSR Small State Wins Match1MDS Match1LSR Match1Small State Wins
2 3-4 4150 2 3-6 4150
10 3-4 5210 NaN NaN NaN
100 3-4 5405 NaN NaN NaN
500 3-4 5625 NaN NaN NaN
2 3-6 3893 2 3-4 3893
像这样的一些数据框是我想要的结果。我宁愿忽略 a-to-a 匹配,因为我不希望第 0 行与第 0 行匹配并记录在新列中。如果没有找到匹配项,我希望有一个空白或没有观察结果另外,如果在 MDS 列下有 3 个观察结果匹配,我也希望将它们以宽格式附加在 match2 名称下,等等对所有匹配 n。运行时不是问题,因为数据集相对较小,不到 10,000,因此我可以使用嵌套循环,但我真的被困在移动数据上。
谢谢!
【问题讨论】:
-
长宽格式是什么意思?您只是想转置表格吗?
-
@Barmar 我研究了转置表格,但这并不是我想要的。我需要按原样保留原始行,转置只是翻转它们。长格式是行中的所有观察,宽格式是列格式的所有观察。我明白你的问题是什么意思,但基本上我需要的输出是我最后创建的数据框