Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 根据str的总长度选择字符串的中间部分到新列中_Python_Pandas - Fatal编程技术网

Python 根据str的总长度选择字符串的中间部分到新列中

Python 根据str的总长度选择字符串的中间部分到新列中,python,pandas,Python,Pandas,如何根据动态变化的长度提取字符串的年份部分 示例数据 Name C:/Users/Documents/Ownership_1_Year_2015.csv C:/Users/Documents/Non_Ownersip_1_Year_2016.csv C:/Users/Documents/Ownership_1_Year_2016.csv 我玩的公式是 df['Name_Stripped'] = df['Name'].str[:-4] 这显然需要.csv,我尝试了一个len(str)-8将提供

如何根据动态变化的长度提取字符串的年份部分

示例数据

Name
C:/Users/Documents/Ownership_1_Year_2015.csv
C:/Users/Documents/Non_Ownersip_1_Year_2016.csv
C:/Users/Documents/Ownership_1_Year_2016.csv
我玩的公式是

df['Name_Stripped'] = df['Name'].str[:-4]
这显然需要.csv,我尝试了一个len(str)-8将提供一个动态的开始值,但毫不奇怪,对于我试图计算的长度,它是混乱的。我确实认为for循环可以与每次调用x的长度一起工作,但我确信有一种更为python的方式我不知道

预期成果:

 Name
2015
2016
2016

我建议提取长度为4的整数:

df['Name'] = df['Name'].str.extract('(\d{4})')
print (df)
   Name
0  2015
1  2016
2  2016

这能解决问题吗

 df['Name_Stripped'] = df['Name'].str[-8:-4]
输出:

                                              Name Name_Stripped
0     C:/Users/Documents/Ownership_1_Year_2015.csv          2015
1  C:/Users/Documents/Non_Ownersip_1_Year_2016.csv          2016
2     C:/Users/Documents/Ownership_1_Year_2016.csv          2016