将两列与相关数据组合成一列(python,pandas)

我正在寻找正确的逻辑来结合使用Python中的pandas使用.xlsx文件中的相关数据的两列。 它和post相似:将pandas中的2列合并到一个有python数据的列中 ,除了我也想在组合列时转换数据,所以它不是真正的两列合并。 我希望能够说:“如果列wbc_na在行x中有”检查“的值,将”不可用“放在行x下列wbc”。 一旦合并,我想删除列“wbc_na”,因为“wbc”现在包含我需要的所有信息。 例如:

input: ID,wbc, wbc_na 1,9.0,- 2,NaN,checked 3,10.2,- 4,8.8,- 5,0,checked 

输出:

 ID,wbc 1,9.0 2,Not available 3,10.2 4,8.8 5,Not available 

感谢您的build议。

您可以使用loc来查找列'wbc_na'是'检查',并为这些行分配列'wbc'值:

 In [18]: df.loc[df['wbc_na'] == 'checked', 'wbc'] = 'Not available' df Out[18]: ID wbc wbc_na 0 1 9 - 1 2 Not available checked 2 3 10.2 - 3 4 8.8 - 4 5 Not available checked [5 rows x 3 columns] In [19]: # now drop the extra column df.drop(labels='wbc_na', axis=1, inplace=True) df Out[19]: ID wbc 0 1 9 1 2 Not available 2 3 10.2 3 4 8.8 4 5 Not available [5 rows x 2 columns] 

您也可以通过列表理解来重新分配列wbc中的值:

 data = pd.DataFrame({'ID': [1,2,3,4,5], 'wbc': [9, np.nan, 10, 8, 0], 'wbc_nan': ['-', 'checked', '-', '-', 'checked']}) data['wbc'] = [(item if data['wbc_nan'][x] != 'checked' else 'Not available') for x, item in enumerate(data['wbc'])] data = data.drop('wbc_nan', axis=1)