Tôi có thể thêm cột mới trong Panda bằng cách xác định hàm người dùng và sau đó sử dụng áp dụng. Tuy nhiên, tôi muốn thực hiện việc này bằng cách sử dụng lambda; có cách nào không?Tạo cột mới trong Panda bằng cách sử dụng hàm lambda trên hai cột hiện có
Ví dụ: df
có hai cột a
và b
. Tôi muốn tạo cột mới c
bằng chiều dài dài nhất giữa a
và b
.
Một số điều như:
df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']))
Một cách tiếp cận:
df = pd.DataFrame({'a':['dfg','f','fff','fgrf','fghj'], 'b' : ['sd','dfg','edr','df','fghjky']})
df['c'] = df.apply(lambda x: max([len(x) for x in [df['a'], df['b']]]))
print df
a b c
0 dfg sd NaN
1 f dfg NaN
2 fff edr NaN
3 fgrf df NaN
4 fghj fghjky NaN
này sẽ làm việc một khi bạn sửa chữa các lỗi cú pháp. 'lambda x' cần một dấu hai chấm sau nó, và biểu thức của bạn thiếu' else' (có thể nó sẽ thay vì 'hoặc'). –
Cảm ơn bạn đã phản hồi nhanh, tuy nhiên nó vẫn không hoạt động. Đây là mã và thông báo lỗi. Tôi sẽ đánh giá cao nếu bạn có thể cung cấp bất kỳ trợ giúp nào. df = pd.DataFrame ({'a': ['dfg', 'f', 'fff', 'fgrf', 'fghj'], 'b': ['sd', 'dfg', 'edr' , 'df', 'fghjky']}) df ['c'] = df.apply (lambda x: len (x ['a']) nếu len (x ['a'])> len (x [ 'b']) khác len (x ['b'])) KeyError: ('a', u'occurred at index a ') –
Xin vui lòng không đặt mã trong các ý kiến, [sửa] câu hỏi để thay thế. –