簡體   English   中英

將字符串轉換為 Pandas df

[英]Transform string to Pandas df

我有這樣的字符串:

'鍵=IAfpK,年齡=58,鍵=WNVdi,年齡=64,鍵=jp9zt,年齡=47'

如何將其轉換為 Pandas DataFrame?

鑰匙 年齡
0
1

謝謝

利用:

In [919]: s = 'key=IAfpK, age=58, key=WNVdi, age=64, key=jp9zt, age=47'
In [922]: d = {}

In [927]: for i in s.split(', '):
     ...:     ele, val = i.split('=')
     ...:     if ele in d:
     ...:         d[ele].append(val)
     ...:     else:
     ...:         d[ele] = [val]
     ...: 
In [930]: df = pd.DataFrame(d)

In [931]: df
Out[931]: 
     key age
0  IAfpK  58
1  WNVdi  64
2  jp9zt  47

一種快速且有點手動的方法是首先創建一個附加每個字符串的 dict 值列表。 然后將該列表轉換為數據框。 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html ):

import pandas as pd

keylist = []
keylist.append({"key": 'IAfpK', "age": '58'})
keylist.append({"key": 'WNVdi', "age": '64'})
keylist.append({"key": 'jp9zt', "age": '47'})

#convert the list of dictionaries into a df
key_df = pd.DataFrame(keylist, columns = ['key', 'age'])

但是,這僅對您提到的特定字符串有效,如果您需要處理更長的字符串/更多數據,那么 for 循環會更有效。

雖然我認為這回答了你的問題,但可能有更優化的方法來解決它:)

嘗試:

s = "key=IAfpK, age=58, key=WNVdi, age=64, key=jp9zt, age=47"

x = (
    pd.Series(s)
    .str.extractall(r"key=(?P<key>.*?),\s*age=(?P<age>.*?)(?=,|\Z)")
    .reset_index(drop=True)
)
print(x)

印刷:

     key age
0  IAfpK  58
1  WNVdi  64
2  jp9zt  47

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM