【问题标题】:How to clean data list of dict on column value pandas如何清理列值 pandas 上的 dict 数据列表
【发布时间】:2023-01-10 01:24:18
【问题描述】:

清理包含字典列表的行中的数据。

原始数据:

transaction_id person
1 [{'name': '~Berk', 'phone_numbers': 'x08123123123'}]
2 [{'name': 'Sergio', 'phone_numbers': '08123123123'}, {'name': 'Sergio_Rio', 'phone_numbers': '-'}]

预期结果:

transaction_id person
1 [{'name': 'Berk', 'phone_numbers': '08123123123'}]
2 [{'name': 'Sergio', 'phone_numbers': '08123123123'}, {'name': 'Sergio Rio', 'phone_numbers': NaN}]

【问题讨论】:

  • 你试过什么?请发布您的代码
  • 你想执行什么规则?你对脏的定义是什么,你对干净的定义是什么?我们可以帮助您使用一组特定规则/启发式/等的 python 实现,但远远超出了 SO 的范围。

标签: python pandas dataframe numpy series


【解决方案1】:

尝试:

def clean_data(x):
    out = []
    for d in x:
        d['name'] = d['name'].lstrip('~')
        d['phone_numbers'] = ''.join(n for n in d['phone_numbers'] if '0' <= n <= '9') or np.nan
        out.append(d)
    return out


df['person'] = df['person'].apply(clean_data)
print(df)

印刷:

   transaction_id                                                                                              person
0               1                                                  [{'name': 'Berk', 'phone_numbers': '08123123123'}]
1               2  [{'name': 'Sergio', 'phone_numbers': '08123123123'}, {'name': 'Sergio_Rio', 'phone_numbers': nan}]

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2023-03-23
    • 1970-01-01
    • 2021-03-23
    • 2018-06-07
    • 1970-01-01
    • 2017-05-02
    • 2017-11-26
    • 2019-03-10
    相关资源
    最近更新 更多