我需要一个函数来对 DataFrame 中许多可能的列中的每一个应用不同的转换。有没有一种我没有想到的简洁方法可以做到这一点?我的任何一个解决方案,
def process_frame(frame):
try:
frame.column_a = frame.column_a.apply(lambda x: bool(int(x)))
except KeyError:
pass
try:
frame.column_b = frame.column_b.apply(lambda x: min(0, x))
except KeyError:
pass
# etc, etc
或
def process_frame(frame):
if 'column_a' in frame.columns:
frame.column_a = frame.column_a.apply(lambda x: bool(int(x)))
if 'column_b' in frame.columns:
frame.column_b = frame.column_b.apply(lambda x: min(0, x))
# etc, etc
相当重复且冗长。有没有更优雅的方法来迭代地尝试/排除代码块中的每一行?
最佳答案
您可以创建一个字典,其中列名作为键,函数作为值。然后你可以迭代字典:
f_dict = {'column_a': lambda x: bool(int(x)),
'column_b': lambda x: min(0, x)}
for k, f in f_dict.items():
if k in df.columns:
df[k] = df[k].apply(f)
关于python - 有没有一种简洁的方法来处理和忽略每行代码的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70852122/