【发布时间】:2020-06-16 21:52:26
【问题描述】:
我有一个数据框 df,有 3 列:name、salary 和 position。
我正在尝试创建一个新的数据框,其中包含任意两行的所有可能组合,我已部分使用:
from itertools import combinations
import pandas as pd
cc = list(combinations(df.index,2)
df2 = pd.DataFrame([df.loc[c,['name','salary','position']] for c in cc], index=cc)
我希望这段代码创建一个新的数据框 (df2),其中包含六列 name1、name2、salary1、salary2、position1 和 position2。每列将包含各自行的数据 - 例如,name1 将包含 name 中的值,用于合并的两行中的第一行,name2 将包含 name 中的值,用于第二行两行。
目前,代码生成三列(name、salary 和 position),将原始数据帧中的字符串连接在一起。例如,第一行的name 值为“JohnSmithJaneDoe”。由于所有条目的长度不同,我不能简单地将它们分成两个新列。
编辑:
我的数据是:
name = ['Barnes', 'Davies', 'Fernandes', 'Freeman', 'Gomes', 'Gray', 'Henderson', 'James', 'Jota', 'Kelly', 'Long', 'McCarthy', 'Pereira', 'Ward', 'Smith']
salary = [51, 48, 52, 69, 46, 83, 123, 78, 71, 63, 61, 48, 65, 49, 62]
position = ['0', '1', '1', '1', '1', '2', '2', '2', '2', '2', '3', '0', '3', '1', '3']
pd.DataFrame({'name':name,'salary':salary,'position':position})
【问题讨论】:
-
你能发布你的数据吗
-
数据已添加
-
您还可以添加一些预期的输出吗?如果我没记错的话,你想要
df2['name1'][0]="Barnes Davies和df2['name2'][0]="Davies吗?薪水和职位会发生什么?列的长度可能不相等,其余值是否使用None? -
第 1 行的预期输出为:name1="Barnes" name2="Davies" Salary1=51 Salary2=48 position1='0' position2='1'
-
您的数据有奇数个值。在最后一行的情况下,name2、salary2 和 position2 会发生什么?他们没有吗?或者你第二行有 name1 作为 Davies 吗?
标签: python pandas combinations