如何使用 pandas 将两列中的数据合并为带有 + 号的一列
How to merge data from two columns into one with a + sign using pandas
我在 csv 中有 2 个这种格式的列。
Drug Product(Predicted)
#N/A acetaldehyde
#N/A nicotine
#N/A resin
#N/A rosa
#N/A eliglustat
#N/A valpromide
#N/A clostridium
#N/A ambenonium
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
#N/A amiloride
#N/A valsartán
#N/A manitol
#N/A hipromelosa
#N/A fosfato disódico
#N/A fosfato disódico
#N/A agalsidase beta
#N/A enoxaparin sodium
solution warfarine
#N/A eliglustat
#N/A silver
#N/A silver
我正在寻找的输出是,创建一个新列,只要药物列中存在一个条目(忽略所有 N/A),通过连接 2 将该条目添加到新列带有加号的列并获得输出 csv
例如:
New column
solution + valpromide
solution + valpromide
solution + warfarine
我是 pandas 的新手,所以我想知道如何使用相同的
使用Series.str.cat
with Series.str.strip
:
df['new'] = df['Drug'].str.cat(df['Product(Predicted)'], na_rep='', sep='+').str.strip('+')
或在合并前将缺失值替换为空字符串:
df['new'] = (df['Drug'].fillna('') + '+' + df['Product(Predicted)']).str.strip('+')
print (df)
Drug Product(Predicted) new
0 NaN acetaldehyde acetaldehyde
1 NaN nicotine nicotine
2 NaN resin resin
3 NaN rosa rosa
4 NaN eliglustat eliglustat
5 NaN valpromide valpromide
6 NaN clostridium clostridium
7 NaN ambenonium ambenonium
8 solution valpromide solution+valpromide
9 solution valpromide solution+valpromide
如果要删除 drug
列中具有 NaN
的行:
df1 = df.dropna(subset=['Drug'])
df1['new'] = df1['Drug'] + '+' + df1['Product(Predicted)']
print (df)
Drug Product(Predicted) new
8 solution valpromide solution+valpromide
9 solution valpromide solution+valpromide
如果您的数据框中没有空值,称为空值,那么我建议您执行以下操作:
df["drug"].replace("#N/A", np.nan, inplace = True)
曾经,您用 null 替换了缺失值,答案只是一行代码
df["new_col"] = df["drug"] + " + " + df["Product"]
如果列、产品或药物中的任何一个为空,以上代码将 return 输出为空。
希望对您有所帮助。
我在 csv 中有 2 个这种格式的列。
Drug Product(Predicted)
#N/A acetaldehyde
#N/A nicotine
#N/A resin
#N/A rosa
#N/A eliglustat
#N/A valpromide
#N/A clostridium
#N/A ambenonium
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
solution valpromide
#N/A amiloride
#N/A valsartán
#N/A manitol
#N/A hipromelosa
#N/A fosfato disódico
#N/A fosfato disódico
#N/A agalsidase beta
#N/A enoxaparin sodium
solution warfarine
#N/A eliglustat
#N/A silver
#N/A silver
我正在寻找的输出是,创建一个新列,只要药物列中存在一个条目(忽略所有 N/A),通过连接 2 将该条目添加到新列带有加号的列并获得输出 csv
例如:
New column
solution + valpromide
solution + valpromide
solution + warfarine
我是 pandas 的新手,所以我想知道如何使用相同的
使用Series.str.cat
with Series.str.strip
:
df['new'] = df['Drug'].str.cat(df['Product(Predicted)'], na_rep='', sep='+').str.strip('+')
或在合并前将缺失值替换为空字符串:
df['new'] = (df['Drug'].fillna('') + '+' + df['Product(Predicted)']).str.strip('+')
print (df)
Drug Product(Predicted) new
0 NaN acetaldehyde acetaldehyde
1 NaN nicotine nicotine
2 NaN resin resin
3 NaN rosa rosa
4 NaN eliglustat eliglustat
5 NaN valpromide valpromide
6 NaN clostridium clostridium
7 NaN ambenonium ambenonium
8 solution valpromide solution+valpromide
9 solution valpromide solution+valpromide
如果要删除 drug
列中具有 NaN
的行:
df1 = df.dropna(subset=['Drug'])
df1['new'] = df1['Drug'] + '+' + df1['Product(Predicted)']
print (df)
Drug Product(Predicted) new
8 solution valpromide solution+valpromide
9 solution valpromide solution+valpromide
如果您的数据框中没有空值,称为空值,那么我建议您执行以下操作:
df["drug"].replace("#N/A", np.nan, inplace = True)
曾经,您用 null 替换了缺失值,答案只是一行代码
df["new_col"] = df["drug"] + " + " + df["Product"]
如果列、产品或药物中的任何一个为空,以上代码将 return 输出为空。
希望对您有所帮助。