这是这个问题的后续:如何根据 pandas 数据框中其他列中的子字符串创建新列? https://stackoverflow.com/questions/70086559/how-to-create-new-column-based-on-substrings-in-other-column-in-a-pandas-datafra
数据框具有以下结构
df = pd.DataFrame({
'Other input': ['Text A', 'Text B', 'Text C', 'Text D', 'Text E'],
'Substance': ['(NPK) 20/10/6', NaN, '46%N / O%P2O5 (Urea)', '46%N / O%P2O5 (Urea)', '(NPK) DAP Diammonphosphat; 18/46/0'],
'value': [0.2, NaN, 0.6, 0.8, .9]
})
Other Input substance value
0 Text A (NPK) 20/10/6 0.2
1 Text B NaN NaN
2 Text C 46%N / O%P2O5 (Urea) 0.6
3 Text D 46%N / O%P2O5 (Urea) 0.8
4 Text E (NPK) DAP Diammonphosphat; 18/46/0 0.9
它是通过将两个 df 与左连接合并而创建的,事实证明我有行没有物质 and value。我需要用短名称替换该物质,并且在数据集中缺少值之前,以下代码有效:
test['Short Name'] = test['Substance'].apply(lambda x: 'Urea' if 'Urea' in x else 'DAP' if 'DAP' in x else '(NPK)')
我怎样才能用NaN(或者0,如果更容易的话)来完成这个工作?有没有相当于na_action=None
这显然适用于 applymap 吗?