如何在具有不同记录的pandas数据框中使用正则表达式?

时间:2019-04-17 12:21:14

标签: python regex dataframe

我在python和正则表达式方面遇到了一些小问题。 我有一张熊猫桌,上面有不同的记录 不同的构造顺序,请参见下文。

+----------------------------------------------+
|                    Total                     |
+----------------------------------------------+
| Total Price: 4 x 2 = 8                       |
| Total Price 200 Price_per_piece 10 Amount 20 |
+----------------------------------------------+

我想将“总计”列中的记录分为其他3列,如下所示。 我是否需要首先将这些列分成2个子集并执行不同的正则表达式,或者你们还有其他解决方案/想法吗?

+-------+-----------------+--------+
| Total | Price_per_piece | Amount |
+-------+-----------------+--------+
|     8 |               4 |      2 |
|   200 |              10 |     20 |
+-------+-----------------+--------+

1 个答案:

答案 0 :(得分:1)

尝试这个:

dtotal = ({"Total":["Total Price: 4 x 2 = 8","Total Price 200 Price_per_piece 10 Amount 20"]})
dt = pd.DataFrame(dtotal)

data = []
for item in dt['Total']:
    regex = re.findall(r"(\d+)\D+(\d+)\D+(\d+)",item)
    regex = (map(list,regex))
    data.append(list(map(int,list(regex)[0])))
dftotal = pd.DataFrame(data, columns=['Total','Price_per_piece','Amount'])
print(dftotal)

输出:

   Total  Price_per_piece  Amount
0      4                2       8
1    200               10      20