私信  •  关注

Sash Sinha

Sash Sinha 最近创建的主题
Sash Sinha 最近回复了
3 年前
回复了 Sash Sinha 创建的主题 » Python将列表中的元素以偶发模式提取到元组中

也许你可以使用while循环:

from typing import Optional, NamedTuple


class Element(NamedTuple):
    value: float
    name: str
    profession: Optional[str] = None


def main() -> None:
    arr = [
        1150.1, 'James',
        3323.1, 'Steve',
        9323.1, 'John',
        1233.1, 'Gary', 'criminal',
        3293.1, 'Josh',
        9232.1, 'Daniel', 'criminal',
    ]
    parsed_elements = []
    i = 0
    while i <= len(arr) - 2:
        if isinstance(arr[i + 2], str):
            parsed_elements.append(Element(*arr[i:i + 3]))
            i += 3
        else:
            parsed_elements.append(Element(*arr[i:i + 2]))
            i += 2
    print('\n'.join(str(e) for e in parsed_elements))


if __name__ == '__main__':
    main()

输出:

Element(value=1150.1, name='James', profession=None)
Element(value=3323.1, name='Steve', profession=None)
Element(value=9323.1, name='John', profession=None)
Element(value=1233.1, name='Gary', profession='criminal')
Element(value=3293.1, name='Josh', profession=None)
Element(value=9232.1, name='Daniel', profession='criminal')
3 年前
回复了 Sash Sinha 创建的主题 » 如何删除df列python中最后一个句点之后的字符?

你可以用 pd.DataFrame. apply 以及一个lambda函数,该函数在拆分后返回最长的元素(基于中的注释) richardec's answer ):

In [1]: import pandas as pd
In [2]: d = {
   ...:     'domains': [
   ...:         'common_name',
   ...:         'www.amazon.com',
   ...:         'amazon.com',
   ...:         'subexample.amazon.com',
   ...:         'walmart.en',
   ...:         'walmart.uk',
   ...:         'michigan.edu',
   ...:         'tkoutletstore.co.uk',
   ...:         'tillyandotto.com.au',
   ...:     ]
   ...: }
   ...: df = pd.DataFrame(data=d)
   ...: df
Out[2]: 
                 domains
0            common_name
1         www.amazon.com
2             amazon.com
3  subexample.amazon.com
4             walmart.en
5             walmart.uk
6           michigan.edu
7    tkoutletstore.co.uk
8    tillyandotto.com.au
In [3]: df['extracted'] = df['domains'].apply(lambda d: max(d.split('.'), key=len))

In [4]: df
Out[4]: 
                 domains      extracted
0            common_name    common_name
1         www.amazon.com         amazon
2             amazon.com         amazon
3  subexample.amazon.com     subexample
4             walmart.en        walmart
5             walmart.uk        walmart
6           michigan.edu       michigan
7    tkoutletstore.co.uk  tkoutletstore
8    tillyandotto.com.au   tillyandotto