如何根据条件在 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))
这里的缺点是,通过将它们转换为字符串,您失去了这些值的意义。我想这完全取决于你希望完成什么。
我有一个包含以下列的数据框:
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))
这里的缺点是,通过将它们转换为字符串,您失去了这些值的意义。我想这完全取决于你希望完成什么。