如何使用 apply 减去 DataFrame 中元组的元素
How to use apply to subtract tuple's elements in DataFrame
我有以下数据集
data = {'A': [[(1,5), (7,10), (20,22)],[(50, 52), (100, 110)], [], [(15,17)]]}
dt = pd.DataFrame(data)
print(dt)
A
0 [(1, 5), (7, 10), (20, 22)]
1 [(50, 52), (100, 110)]
2 []
3 [(15, 17)]
我想得到一个新列,它是一个列表,该列表中的每个元素都是元组元素的差异。例如,第 1 行有三个元组 (1,5), (7,10), (20,22)
,我想得到一个显示 [4,3,2]
的列表,这些元素来自 5-1= 4、10-7=3 和 22-20= 2.
期望的结果可能是:
A B
0 [(1, 5), (7, 10), (20, 22)] [4, 3, 2]
1 [(50, 52), (100, 110)] [2, 10]
2 [] []
3 [(15, 17)] [2]
我可以使用 loop
但它不是一种有效的方法所以我尝试了一个更好的解决方案如下:
dt['A'].apply([(lambda x: i[1]- i[0])(x) for i in x.tolist()])
注意:x.tolist()
是我尝试使 x
可迭代的尝试。
我的解决方案不起作用,如有任何帮助,我们将不胜感激
dt['B'] = dt['A'].apply(lambda x: [b-a for a, b in x])
print(dt)
打印:
A B
0 [(1, 5), (7, 10), (20, 22)] [4, 3, 2]
1 [(50, 52), (100, 110)] [2, 10]
2 [] []
3 [(15, 17)] [2]
我有以下数据集
data = {'A': [[(1,5), (7,10), (20,22)],[(50, 52), (100, 110)], [], [(15,17)]]}
dt = pd.DataFrame(data)
print(dt)
A
0 [(1, 5), (7, 10), (20, 22)]
1 [(50, 52), (100, 110)]
2 []
3 [(15, 17)]
我想得到一个新列,它是一个列表,该列表中的每个元素都是元组元素的差异。例如,第 1 行有三个元组 (1,5), (7,10), (20,22)
,我想得到一个显示 [4,3,2]
的列表,这些元素来自 5-1= 4、10-7=3 和 22-20= 2.
期望的结果可能是:
A B
0 [(1, 5), (7, 10), (20, 22)] [4, 3, 2]
1 [(50, 52), (100, 110)] [2, 10]
2 [] []
3 [(15, 17)] [2]
我可以使用 loop
但它不是一种有效的方法所以我尝试了一个更好的解决方案如下:
dt['A'].apply([(lambda x: i[1]- i[0])(x) for i in x.tolist()])
注意:x.tolist()
是我尝试使 x
可迭代的尝试。
我的解决方案不起作用,如有任何帮助,我们将不胜感激
dt['B'] = dt['A'].apply(lambda x: [b-a for a, b in x])
print(dt)
打印:
A B
0 [(1, 5), (7, 10), (20, 22)] [4, 3, 2]
1 [(50, 52), (100, 110)] [2, 10]
2 [] []
3 [(15, 17)] [2]