假设我有一个像这样的数据框:
Name | Level
Jack 1
John 2
Mike 1
Mark 2
经过一番处理后,我得到了Names
对元组的随机列表:
[('Jack','Mark'),('Jack','John'),('Mark','Mike')]
是否可以返回元组中每个元素的Level
。例如:
[('Jack','Mark',1,2),('Jack','John',1,2),('Mark','Mike',2,1)]
或采用元组内部元素之间的区别?:
[('Jack','Mark',-1),('Jack','John',-1),('Mark','Mike',1)]
我可能已经陷进了一个洞,我正在寻找挖洞的机会。
答案 0 :(得分:1)
d = df.set_index('Name').Level
dict.get
d = dict(zip(df.Name, df.Level)
也可以使用:a = [('Jack','Mark'),('Jack','John'),('Mark','Mike')]
[t + tuple(map(d.get, t)) for t in a]
[('Jack', 'Mark', 1, 2), ('Jack', 'John', 1, 2), ('Mark', 'Mike', 2, 1)]
[t + (d[t[0]] - d[t[1]],) for t in a]
[('Jack', 'Mark', -1), ('Jack', 'John', -1), ('Mark', 'Mike', 1)]
和
"run 32 bit" = false
答案 1 :(得分:0)
df = pd.DataFrame(
data={
'Name': ['Jack', 'John', 'Mike', 'Mark'],
'Level': [1, 2, 3, 4]
}
)
pairs = [('Jack','Mark'),('Jack','John'),('Mark','Mike')]
def get_level(df, name):
return df[df['Name'] == name]['Level'].values[0]
new_pairs = []
for pair in pairs:
new_pairs.append(
(
pair[0], pair[1], get_level(df, pair[0]), get_level(df, pair[1])
)
)