gpt4 book ai didi

python - 用特殊字符过滤 df

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:37 25 4
gpt4 key购买 nike

大家好,我有一个像下面这样的 df :-

df = pd.DataFrame.from_records([
{'0':'a:1','1':'b:2','2':'c:abc' },
{'0':'a:2','1':'b:5','2':'c:afbc'}
])

enter image description here

我想把它转换成如下的 df :-

enter image description here

我想用 before : 的值重命名列索引,列中的值应该是 after : 的任何值

截至目前,我正在以困难的方式进行操作,首先重命名然后从头开始删除字符:-

dff.rename(columns={'0': 'a', '1': 'b', '2': 'c',}, inplace=True)
dff['a'] = dff['a'].map(lambda x: str(x)[2:])
dff['b'] = dff['b'].map(lambda x: str(x)[2:])
dff['c'] = dff['c'].map(lambda x: str(x)[2:])

如果有任何一种线性函数或 lambda 函数我可以使用,我需要一些帮助,因为我有超过 20 列。

P.S - 原始数据框中的 0,1,2 是列索引。只是为了演示,我将它们用作列名。

最佳答案

词典列表

pd.DataFrame([dict(x.split(':') for x in r) for r in df.values])

a b c
0 1 2 abc
1 2 5 afbc

备选

pd.DataFrame([*df.apply(lambda r: dict(r.str.split(':').values), 1)])

回应OP的评论

the code doesnt work when the column names are more than one characters say aa or time like that. its only workign when the column names are like a, b ,c and not with aa, bbbb, cccccc – ak333

考虑数据框

df = pd.DataFrame([
{'0': 'aa:1', '1': 'bbb:2', '2': 'cccc:abc'},
{'0': 'aa:2', '1': 'bbb:5', '2': 'cccc:afbc'}
])
df

0 1 2
0 aa:1 bbb:2 cccc:abc
1 aa:2 bbb:5 cccc:afbc

同样的解决方案导致

pd.DataFrame([dict(x.split(':') for x in r) for r in df.values])

aa bbb cccc
0 1 2 abc
1 2 5 afbc

关于python - 用特殊字符过滤 df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53486855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com