一段我认为不会起作用的代码。我只想在另一列代表“ X”的情况下将“ X”添加到标签中。但是,我不能只说df['Tag With X' = df['Tag'] + "X"
,我以为我可以这样做:
MaterialsReport_df['Scoring Site Including X'] = np.where(MaterialsTracking_df['# BOXES'] == "X",
MaterialsTracking_df['Scoring Site DBN'] + "X",
MaterialsTracking_df['Scoring Site DBN'])
这将显示错误elementwise comparison failed; returning scalar instead...result = method(y)
。
当在末尾添加.astype(str)
时,我知道这可行。我只是不明白为什么。
特别是因为当我检查列的类型和转换为字符串的列的类型时,Python都说两者仍然是<class 'pandas.core.series.Series'>
。
答案 0 :(得分:0)
您尝试过吗:
df = MaterialsReport_df
df['Scoring Site Including X'] = df.apply(lambda x: x['Scoring Site DBN'] + 'X' if x['# BOXES'] == 'X' else x['Scoring Site DBN'], axis=1)
如果“评分站点DBN”的每个元素都是一个字符串,则应该可以。