Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用切片和数据帧系列作为结束的子字符串_Python_Pandas_Dataframe_Slice_Series - Fatal编程技术网

Python 使用切片和数据帧系列作为结束的子字符串

Python 使用切片和数据帧系列作为结束的子字符串,python,pandas,dataframe,slice,series,Python,Pandas,Dataframe,Slice,Series,我有这样一个数据帧: 大宗报价 我想做的是为strings列中的每个值提取字符串的2/3。正如您所看到的,每个字符串的长度不同,因此要切掉的2/3rds位置也不同。我的目标输出如下所示: 大宗报价 我试过: x=(df['strings'].str.len()*2/3).apply(np.floor).astype(int) df['strings'].str.slice(0,x) 但这只是给了我以下输出: 大宗报价 有人能帮忙吗 谢谢更好的方法是使用countlens,并通过索引选择[]:

我有这样一个数据帧:

大宗报价

我想做的是为strings列中的每个值提取字符串的2/3。正如您所看到的,每个字符串的长度不同,因此要切掉的2/3rds位置也不同。我的目标输出如下所示:

大宗报价

我试过:

x=(df['strings'].str.len()*2/3).apply(np.floor).astype(int)
df['strings'].str.slice(0,x) 
但这只是给了我以下输出:

大宗报价

有人能帮忙吗

谢谢

更好的方法是使用count
len
s,并通过索引选择
[]

print (df['strings'].apply(lambda x: x[:int(len(x)*2/3)]))
0    lui sau 
1       d1420
2     9876487
3        ming
4       g1927
5        hann
Name: strings, dtype: object

另一个解决方案:

首先创建新列,然后对“按行处理”应用轴=1的
apply

df['l'] =(df['strings'].str.len()*2/3).apply(np.floor).astype(int)
print (df)
        strings  l
0  lui sau chun  8
1      d1420152  5
2   98764879333  7
3       minglee  4
4      g1927384  5
5        hannah  4

print (df.apply(lambda x: x['strings'][0: x['l']], axis=1))
0    lui sau 
1       d1420
2     9876487
3        ming
4       g1927
5        hann
dtype: object

如果我的答案有用,别忘了-点击复选标记(
),将其从灰显切换为填充。谢谢
Out[451]: 
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN
Name: strings, dtype: float64
print (df['strings'].apply(lambda x: x[:int(len(x)*2/3)]))
0    lui sau 
1       d1420
2     9876487
3        ming
4       g1927
5        hann
Name: strings, dtype: object
df['l'] =(df['strings'].str.len()*2/3).apply(np.floor).astype(int)
print (df)
        strings  l
0  lui sau chun  8
1      d1420152  5
2   98764879333  7
3       minglee  4
4      g1927384  5
5        hannah  4

print (df.apply(lambda x: x['strings'][0: x['l']], axis=1))
0    lui sau 
1       d1420
2     9876487
3        ming
4       g1927
5        hann
dtype: object