[英]Python loop through tuple list adding a value from pandas data frame
I am trying to loop through a list of tuples adding a value to the end of each one that corresponds to a value in a column in a pandas data frame.我试图遍历一个元组列表,在每个元组的末尾添加一个值,该值对应于熊猫数据框中列中的一个值。
df1 = [(1,2),(4,5),(8,9)]
df2 = pd.DataFrame({'Alpha': [2, 4, 8],
'Beta': ["a","b","c"]})
df3 = []
for i in df1:
print(i)
for i,j in df2["Beta"], df1:
j = j + (i,)
df3.append(j)
print(df3)
I would expect print(df3) to display the following:我希望 print(df3) 显示以下内容:
[(1, 2, 'a'), (4, 5, 'b'), (8, 9, 'c')]
However, I get an error stating too many values to unpack.但是,我收到一个错误,指出要解压缩的值太多。
Use zip
, list comprehension solution:使用
zip
,列表理解解决方案:
df3 = [j + (i,) for i,j in zip(df2["Beta"], df1)]
Your solution should be changed:您的解决方案应该改变:
for i,j in zip(df2["Beta"], df1):
j = j + (i,)
df3.append(j)
print(df3)
[(1, 2, 'a'), (4, 5, 'b'), (8, 9, 'c')]
One way using a list comprehension would be:使用列表理解的一种方法是:
[(*i, j) for i, j in zip(df1, df2.Beta)]
# [(1, 2, 'a'), (4, 5, 'b'), (8, 9, 'c')]
Or you could also map
with operator.add
:或者你也可以用
operator.add
map
:
from operator import add
list(map(add, df1, df2.Beta.map(tuple)))
# [(1, 2, 'a'), (4, 5, 'b'), (8, 9, 'c')]
Or working from pandas:或者从熊猫工作:
(pd.Series(df1) + df2.Beta.map(tuple)).values.tolist()
# [(1, 2, 'a'), (4, 5, 'b'), (8, 9, 'c')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.