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

时间:2014-06-03 21:43:46

标签: python excel pandas

我正在寻找正确的逻辑,使用python中的pandas将两列与来自.xlsx文件的相关数据组合在一起。它类似于帖子:Merge 2 columns in pandas into one columns that have data in python,除了我还想在组合列时转换数据,因此它不是两列的真正合并。我想能够说"如果列wbc_na有值"检查"在第x行,地点"不可用"在列wbc"下的第x行中。一旦合并,我想放弃专栏" 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  

感谢您的建议。

2 个答案:

答案 0 :(得分:2)

您可以使用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]

答案 1 :(得分:1)

您还可以使用列表解析来重新分配列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)