Python 获取数据帧中列中n个字中的前n/2个字

Python 获取数据帧中列中n个字中的前n/2个字,python,pandas,Python,Pandas,我想得到熊猫数据帧中列中n个单词中的前n/2个。 每行可以有不同的字数,但每行的字数为偶数。 此列包含项的名称,但每个名称都是重复的。 例如,One变成了One,一两变成了一两 我认为下面的方法会奏效 数一数字数 在空格上拆分列 获取此拆分中的前n/2个单词 但它不起作用(我只是随便使用Python和pandas)。 这是一个MWE import pandas as pd df = pd.DataFrame(['One One', 'One Two One Two']) df[1] = df[0

我想得到熊猫数据帧中列中n个单词中的前n/2个。 每行可以有不同的字数,但每行的字数为偶数。 此列包含项的名称,但每个名称都是重复的。 例如,
One
变成了
One
一两
变成了
一两

我认为下面的方法会奏效

  • 数一数字数
  • 在空格上拆分列
  • 获取此拆分中的前n/2个单词
  • 但它不起作用(我只是随便使用Python和pandas)。 这是一个MWE

    import pandas as pd
    df = pd.DataFrame(['One One', 'One Two One Two'])
    df[1] = df[0].str.count('\w+')
    df[2] = df[0].str.split()
    df[3] = df[0].get(df[2])
    

    另外,请告诉我您是否为R用户提供了关于熊猫的良好参考。

    基于您之前的努力:

    df = pd.DataFrame(['One One', 'One Two One Two'])
    
    def proc(s):
        l = s.split()
        return ' '.join(l[:len(l) // 2])
    
    df[1] = [proc(s) for s in df[0].values.tolist()]
    
                     0        1
    0          One One      One
    1  One Two One Two  One Two
    
    df = pd.DataFrame(['One One', 'One Two One Two'])
    df[1] = df[0].str.count('\w+')
    df[2] = df[0].str.split()
    df[3]=df.apply(lambda x: ' '.join(x[2][:int((x[1]/2))]), axis=1)
    
    df
    Out[354]: 
                     0  1                     2        3
    0          One One  2            [One, One]      One
    1  One Two One Two  4  [One, Two, One, Two]  One Two
    
    我的解决方案(根据您提到的内容,每行可以有不同的字数,但每行的字数为偶数。此列包含项目名称,但每个名称都是重复的。):


    从数据栏中列出的列名中获取第一个n(2以上)。请考虑为您的解决方案添加一些解释,以便其他人了解您为什么和为什么这样做。

    df['Target']= df.apply(lambda x: x[0][:int((len(x[0])+1)/2)], axis=1)
    
    
    df
    Out[389]: 
                     0    Target
    0          One One      One 
    1  One Two One Two  One Two 
    
    df[column_name].apply(lambda x: ' '.join(x.split()[:2]))