我正试图找到一种解决方案,从我的DataFrame中的某些字符串中去掉空格。我找到了这个解决方案,有人说:
我同意其他答案,即在文献资料 for
str.strip
中没有条形函数的内嵌参数。 另外:我发现熊猫系列的str
函数通常用于选择特定的行。就像df[df['Name'].str.contains('69')
。我想说,这可能是它没有内嵌参数的一个原因--它并不意味着像rename
或drop
那样完全“独立”。 也要加!我认为更多的丙酮解决方案是使用负指数代替:data['Name'] = data['Name'].str.strip().str[-5:]
这样,我们不需要假设有18个字符,或者我们将始终得到“最后5个字符”而不是!
因此,我有一个名为' DataFrames‘的dataframes列表。在第一个dataframe (也就是dataframe)上,我有一个名为'CNJ‘的列,其中一些列的字符串值是空的。例如:
输入:
dataframes[0]['cnj'][9]
输出:
'0100758-73.2019.5.01.0064 '
因此,在上面的评论之后,我做了这样的事情:
输入:
dataframes[0]['cnj'] = dataframes[0]['cnj'].strip()
然后,我得到以下错误:
AttributeError: 'Series' object has no attribute 'strip'
由于在另一个主题上给出的解决方案是有效的,我做错了什么来得到这个错误?在我看来,它不应该工作,因为它是一个系列,但它应该得到相同的结果,上面提到的(data['Name'] = data['Name'].str.strip().str[-5:]
),对吗?
发布于 2022-05-05 14:36:45
使用
dataframes[0]['cnj']=dataframes[0]['cnj'].str.strip()
或者更好的是,首先将数据存储在一个变量中:
df0=dataframes[0]
df0['cnj']=df0['cnj'].str.strip()
您发布的解决方案中的代码使用.str
。:
data['Name'] = data['Name'].str.strip().str[-5:]
Pandas对象没有字符串或日期操作方法方法。它们是通过Series.str和Series.dt访问器对象公开的。
Series.str.strip()的结果是一个新的系列。这就是为什么需要.str[-5:]
来检索最后5个字符。这个结果又是一个新的系列。这一表述相当于:
temp_series=data['Name'].str.strip()
data['Name'] = temp_series.str[-5:]
https://stackoverflow.com/questions/72128756
复制相似问题