gpt4 book ai didi

python - 将字符串列转换为 Pandas 数据框中的固定长度字符串数组

转载 作者:行者123 更新时间:2023-12-05 09:26:32 26 4
gpt4 key购买 nike

我有一个包含几列的 Pandas 数据框。我想将其中一个字符串列转换为固定长度的字符串数组。

这是当前表的样子:

+-----+--------------------+--------------------+
|col1 | col2 | col3 |
+-----+--------------------+--------------------+
| 1 |Marco | LITMATPHY |
| 2 |Lucy | NaN |
| 3 |Andy | CHMHISENGSTA |
| 4 |Nancy | COMFRNPSYGEO |
| 5 |Fred | BIOLIT |
+-----+--------------------+--------------------+

如何将“col 3”的字符串拆分为长度为 3 的字符串数组,如下所示:PS:第3列可以有空格或NaN,需要用空数组替换。

+-----+--------------------+----------------------------+
|col1 | col2 | col3 |
+-----+--------------------+----------------------------+
| 1 |Marco | ['LIT','MAT','PHY] |
| 2 |Lucy | [] |
| 3 |Andy | ['CHM','HIS','ENG','STA'] |
| 4 |Nancy | ['COM','FRN','PSY','GEO'] |
| 5 |Fred | ['BIO','LIT'] |
+-----+--------------------+----------------------------+

最佳答案

使用textwrap.wrap :

import textwrap

df['col3'].apply(lambda x: textwrap.wrap(x, 3) if pd.notna(x) else [])

如果存在长度不是3的倍数的字符串,则将剩余的字母推到最后。如果您只想拥有长度为 3 的字符串,您可以再应用一个来去掉这些字符串:

df['col3'].apply(lambda x: textwrap.wrap(x, 3) if pd.notna(x) else []).\
apply(lambda x: x[:-1] if len(x[-1]) % 3 != 0 else x)

关于python - 将字符串列转换为 Pandas 数据框中的固定长度字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73852568/

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