如何根据条件在 pandas 数据框中创建新列?

How to create a new column in pandas dataframe based on a condition?

我有一个包含以下列的数据框:

d = {'find_no': [1, 2, 3], 'zip_code': [32351, 19207, 8723]}
df = pd.DataFrame(data=d)

当zip_code列有5位数字时,我想return为真。当没有5位数字时,我想return“find_no”。 示例输出会将结果添加到数据框的列中,对应于它引用的行。

你可以试试 np.where:

import numpy as np

df['result'] = np.where(df['zip_code'].astype(str).str.len() == 5, True, df['find_no'])

这种方法的唯一缺点是 NumPy 会将您的 True 值转换为 1,这可能会造成混淆。一种保持你想要的值的方法是做

import numpy as np

df['result'] = np.where(df['zip_code'].astype(str).str.len() == 5, 'True', df['find_no'].astype(str))

这里的缺点是,通过将它们转换为字符串,您失去了这些值的意义。我想这完全取决于你希望完成什么。