我的算法速度有问题,太慢了。我有一个大的数据框,想要创建列取决于其他名称和值。我正在熊猫中寻找解决方案。在运行之前,我不知道将来的列的大小。这是一个简单的模式。
"column"<==>"value"<br>"column"<==> "value"<br>...
我的数据框
id | params |
---|-----------------
0 |currency<=>PLN<br>price<=>72.14<br>city<==>Berlin
---|-----------------
1 |price<=>90<br>area<=>72.14<br>city<==>San Francisco<br>rooms<==>2<br>is_Free<==>1
---|-----------------
我想要这样的东西
id | price | currency | city | rooms | is_Free| area|
---|------ |----------|--------------|-------|--------|------
0| 72.14 | PLN | Berlin | NaN | NaN | NaN|
---|-------|----------|--------------|-------|--------|------
1| 90 | NaN | San Francisco| 2 | 1 | 90 |
我的解决方案:
def add_parameters(df):
for i,row in df.iterrows():
parameters_list = row.params.split("<br>")
for parameter in parameters_list:
elem_list = parameter.split("<=>")
if elem_list[0] and elem_list[1] != '':
df.loc[i, elem_list[0]] = elem_list[1]
return df
谢谢