Python 如何将数据框内的文本拆分为新的数据框列

Python 如何将数据框内的文本拆分为新的数据框列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一张单子 list1= ['{"bank_name": null, "country": null, "url": null, "type": "Debit", "scheme": "Visa", "bin": "789452"}\n', '{"prepaid": "",

我有一张单子

list1= ['{"bank_name": null, "country": null, "url": null, "type": "Debit", "scheme": "Visa", "bin": "789452"}\n',
 '{"prepaid": "", "bin": "123457", "scheme": "Visa", "type": "Debit", "bank_name": "Ohio", "url": "www.u.org", "country": "UKs"}\n']
我将其传递到一个
数据帧中

df = pd.DataFrame({'bincol':list1})
print(df)
                                               bincol
0  {"bank_name": null, "country": null, "url": nu...
1  {"prepaid": "", "bin": "123457", "scheme": "Vi...
import json

df = pd.json_normalize(df['bincol'].apply(json.loads))
print(df)

  bank_name country        url   type scheme     bin prepaid
0      None    None       None  Debit   Visa  789452     NaN
1      Ohio     UKs  www.u.org  Debit   Visa  123457        
我正在尝试使用此函数将
bincol
列拆分为新列

def explode_col(df, column_value):
    df = df.dropna(subset=[column_value])
    if isinstance(df[str(column_value)].iloc[0], str):
        df[column_value] = df[str(column_value)].apply(ast.literal_eval)
    expanded_child_df = (pd.concat({i: json_normalize(x) for i, x in .pop(str(column_value)).items()}).reset_index(level=1,drop=True).join(df, how='right', lsuffix='_left', rsuffix='_right').reset_index(drop=True))
    expanded_child_df.columns = map(str.lower, expanded_child_df.columns)

    return expanded_child_df

df2 = explode_col(df,'bincol')
但是我犯了这个错误,我是不是遗漏了什么

raise ValueError(f'malformed node or string: {node!r}')
ValueError: malformed node or string: <_ast.Name object at 0x7fd3aa05c400>
raisevalueerror(f'格式错误的节点或字符串:{node!r}')
ValueError:节点或字符串格式不正确:

对于我来说,在您的示例数据
json中工作。加载
以将数据转换为字典,然后用于
数据帧

df = pd.DataFrame({'bincol':list1})
print(df)
                                               bincol
0  {"bank_name": null, "country": null, "url": nu...
1  {"prepaid": "", "bin": "123457", "scheme": "Vi...
import json

df = pd.json_normalize(df['bincol'].apply(json.loads))
print(df)

  bank_name country        url   type scheme     bin prepaid
0      None    None       None  Debit   Visa  789452     NaN
1      Ohio     UKs  www.u.org  Debit   Visa  123457