如何使用apply减去DataFrame中元组的元素

2023-02-06 13:49:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据集

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)]

我想得到一个新的列,它是一个列表,列表中的每个元素都是元组元素的差。例如,对于row1,有三个元组作为(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迭代化。 我的解决方案不起作用,任何帮助都将不胜感激


Tags: 数据方法loop元素dataframe列表datadt解决方案pd元组applyrow1printtolist
1条回答
网友
1楼 · 发布于 2023-02-06 13:49:37
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]

相关问题 更多 >