【发布时间】:2018-04-29 06:56:03
【问题描述】:
我有两个数据框:
-
df_components:唯一组件列表(ID、DESCRIPTION) -
dataset:CSV 中的几行和几列(其中一列包含组件的描述)。
我需要根据df_components在dataset中创建一个新列,其组件的ID。
我尝试过这样做:
根据索引创建df_components 和ID 列
components = dataset["COMPDESC"].unique()
df_components = pd.DataFrame(components, columns=['DESCRIPTION'])
df_components.sort_values(by='DESCRIPTION', ascending=True, inplace=True)
df_components.reset_index(drop=True, inplace=True)
df_components.index += 1
df_components['ID'] = df_components.index
样本输出:
DESCRIPTION ID
1 AIR BAGS 1
2 AIR BAGS:FRONTAL 2
3 AIR BAGS:FRONTAL:SENSOR/CONTROL MODULE 3
4 AIR BAGS:SIDE/WINDOW 4
在数据集中创建COMP_ID:
def create_component_id_column(row):
found = df_components[df_components['DESCRIPTION'] == row['COMPDESC']]
return found.ID if len(found.index) > 0 else None
dataset['COMP_ID'] = dataset.apply(lambda row: create_component_id_column(row), axis=1)
但是这给了我错误ValueError: Wrong number of items passed 248, placement implies 1。 df_components 上的项目数为 248。
如何使用df_components 上的项目的 ID 创建这个新列?
【问题讨论】: