将逗号分隔的字符串转换为 Pandas 数据框

时间:2021-07-04 10:00:37

标签: python python-3.x pandas dataframe numpy

我有一个字符串是 -

str="Key=xxxx, age=11, key=yyyy , age=22,Key=zzzz, age=01, key=qqqq, age=21,Key=wwwww, age=91, key=pppp, age=22"

我想将此字符串转换为 Python DataFrame,并以 KEY 和 AGE 作为列名。 给定的密​​钥和年龄成对出现。 我如何才能实现这种转换?

2 个答案:

答案 0 :(得分:1)

你可以试试regex

import re
import pandas as pd

s = "Key=xxxx, age=11, key=yyyy , age=22,Key=zzzz, age=01, key=qqqq, age=21,Key=wwwww, age=91, key=pppp, age=22"

df = pd.DataFrame(zip(re.findall(r'Key=([^,\s]+)', s, re.IGNORECASE), re.findall(r'age=([^,\s]+)', s, re.IGNORECASE)),
                 columns=['key', 'age'])

df
     key    age
0   xxxx    11
1   yyyy    22
2   zzzz    01
3   qqqq    21
4   wwwww   91
5   pppp    22

答案 1 :(得分:1)

使用正则表达式查找所有 key/age 对:"key=(\w+)\s*,\s*age=(\w+)" 然后使用它们构建数据框

import re
import pandas as pd

content = "Key=xxxx, age=11, key=yyyy , age=22,Key=zzzz, age=01, key=qqqq, age=21,Key=wwwww, age=91, key=pppp, age=22"
pat = re.compile(r"key=(\w+)\s*,\s*age=(\w+)", flags=re.IGNORECASE)

values = pat.findall(content)
df = pd.DataFrame(values, columns=['key', 'age'])
print(df)

# - - - - - 
     key age
0   xxxx  11
1   yyyy  22
2   zzzz  01
3   qqqq  21
4  wwwww  91
5   pppp  22