Hãy nói rằng khung dữ liệu của tôi có chứa những dữ liệu này:làm thế nào để tính toán một cột mới dựa trên các giá trị của các cột khác trong gấu trúc - python
>>> df = pd.DataFrame({'a':['l1','l2','l1','l2','l1','l2'],
'b':['1','2','2','1','2','2']})
>>> df
a b
0 l1 1
1 l2 2
2 l1 2
3 l2 1
4 l1 2
5 l2 2
l1
phải tương ứng với 1
trong khi l2
phải tương ứng với 2
. Tôi muốn tạo cột mới 'c
' sao cho, đối với mỗi hàng, c = 1
nếu a = l1
và b = 1
(hoặc a = l2
và b = 2
). Nếu a = l1
và b = 2
(hoặc a = l2
và b = 1
) thì c = 0
.
Khung dữ liệu kết quả sẽ giống như thế này:
a b c
0 l1 1 1
1 l2 2 1
2 l1 2 0
3 l2 1 0
4 l1 2 0
5 l2 2 1
khung dữ liệu của tôi là rất lớn vì vậy tôi thực sự tìm kiếm những cách hiệu quả nhất để làm điều này bằng gấu trúc.
Thú vị, tuy nhiên giải pháp của bạn ít tổng quát hơn đáng kể. Điều thú vị ở đây là phương pháp 'str [1]' xấu như thế nào so với lambda đơn giản. –
Bạn không kiểm tra khi nào '(df.a == 'l2') == (df.b == '2')'. –
@StevenRumbalski Tôi cho rằng đầu vào ví dụ đã hoàn thành và 'a' chỉ có giá trị' l1' hoặc 'l2' và' b' chỉ ''1'' hoặc'' 2''. Nếu 'a! = 'L1'', nó phải là'' l2''. – chlunde