Pandas新建列:提取列表前三个元素用连字符连接并移除方括号
解决方案
分两种情况处理,取决于你的col2是列表类型还是字符串类型:
情况1:col2是列表类型
如果col2存储的是Python列表(不是字符串格式的列表),直接用apply结合切片和字符串拼接即可:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'col1': ['ABC'], 'col2': [['hello', 'hi', 'hey', 'hiya']] }) # 生成col3 df['col3'] = df['col2'].apply(lambda x: '-'.join(x[:3]))
执行后就能得到你要的结果,join方法会直接取列表里的元素拼接,不会带方括号。
情况2:col2是字符串类型
如果col2是看起来像列表的字符串(比如值是"[hello, hi, hey, hiya]"),需要先把字符串转成列表再处理:
import pandas as pd # 示例数据(col2为字符串) df = pd.DataFrame({ 'col1': ['ABC'], 'col2': ["[hello, hi, hey, hiya]"] }) # 清理字符串并生成col3 df['col3'] = df['col2'].str.strip('[]')\ .str.split(', ')\ .apply(lambda x: '-'.join(x[:3]))
这样就能彻底去掉方括号,得到预期的hello-hi-hey格式。
内容的提问来源于stack exchange,提问作者user18334254
相关产品推荐
相关产品推荐

