我正在为我的小项目构建一些需要翻译成我自己数据的数据框。
我有以下属性表作为示例:
ID date road_tpe dmg name
1 11-11-2016 elements A street
2 11-11-2016 asphalt B A street
3 11-11-2016 asphalt A B street
4 11-11-2016 concrete A C street
结果应该是
ID date_of_construction road_type damage_asphalt damage_concrete street_name
1 11-11-2016 03 null null 01
2 11-11-2016 01 02 null 01
3 11-11-2016 01 01 null 02
4 11-11-2016 02 null 01 03
我制作了一个标准化的Excel翻译表,可以轻松地将我的输入数据转换为我想要的数据/我自己的风格。
category_old value_old category_new sort_of_data value_new split_category split_value
date date_of_construction date
road_tpe asphalt road_type existing_list 1
road_tpe concrete road_type existing_list 2
road_tpe elements road_type existing_list 3
dmg A damage_asphalt split 1 road_tpe asphalt
dmg B damage_asphalt split 2 road_tpe asphalt
dmg A damage_concrete split 1 road_tpe concrete
name street_name new_list
首先,您将获得所有category_old独特功能的列表,以启动循环并检查Sort_of_data中的数据类型。 根据什么数据,您可以执行以下操作。 对于date_of_construction,这将是:
if sort_of_date == date:
string(category_new[1]) = date ##meaning: date_of_construction takes over the values of date
对于road_tpe,这应该是这样的:
if sort_of_date == existing_list:
*** make list of unique values based on the category_old and Value_old
for i in (length list)
if value_old of road_tpe == value_old_list[i]
value_old = value_new
if sort_of_date == split:
将road_tpe考虑在内的分割(road_tpe应存储在额外属性split_category和split_value中)
之后它与上面相同
if sort_of_date == new_list:
列出所有唯一值并创建一个将要导出的新表(名称,代码,顺序)
代码只是一个计数变换器
order是按字母顺序排列的列表
在此之后,所有街道名称都应该被代码替换。
这是解决这个问题的正确方法吗?