提取分隔符之间的文本,并将其作为列表存储在单独的列中

时间:2017-08-25 00:59:20

标签: python pandas

我有一个Panda数据框,其中包含以下格式的文本列。在##之间存在一些值/文本网格。我想在##之间找到这样的文本,并将它们作为列表在单独的列中提取。

##fare_curr.currency####based_fare_90d.price##

htt://www.abcd.lol/abcd-Search?from:##based_best_flight_fare_90d.air##,to:##mbased_90d.water##,departure:##mbased_90d.date_1##TANYT&pas=ch:0Y&mode=search

将上述两个字符串视为同一列的两行。我希望在第一行中添加list [fare_curr.currency, based_fare_90d.price],在第二行添加[based_best_flight_fare_90d.air, mbased_90d.water, based_90d.date_1]

1 个答案:

答案 0 :(得分:1)

鉴于此df

df = pd.DataFrame({'data':
['##fare_curr.currency####based_fare_90d.price##',
'htt://www.abcd.lol/abcd-Search?\ from:##based_best_flight_fare_90d.air##,to:##mbased_90d.water##,departure:#
#mbased_90d.date_1##TANYT&pas=ch:0Y&mode=search']})

您可以使用

在新列中获得所需的结果
df['new'] = pd.Series(df.data.str.extractall('##(.*?)##').unstack().values.tolist())

你得到了

    data                                            new
0   ##fare_curr.currency####based_fare_90d.price##  [fare_curr.currency, based_fare_90d.price, None]
1   htt://www.abcd.lol/abcd-Search?from:##based_be...   [based_best_flight_fare_90d.air, mbased_90d.wa...