Python 获取数据帧中列中n个字中的前n/2个字
我想得到熊猫数据帧中列中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
One
变成了One
,一两
变成了一两
我认为下面的方法会奏效
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]))