修改pandas dataframe列中的字符串

时间:2019-02-21 13:40:52

标签: python string pandas numpy dataframe

我想将所有字符串都小写,并删除字符串开头和结尾的空格。

df = pandas.DataFrame(data=[1,2,3,'A'],columns=['A'])
df['A'] = numpy.where(
    df['A'].apply(lambda x: isinstance(x, str)),
    df['A'].str.lower().str.strip(),
    df['A'],
)

问题是,如果所有行都不是字符串,则上面的代码将失败。

df = pandas.DataFrame(data=[1,2,3],columns=['A'])
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

是否有比这更好的方法

for index in df['A'].index:
    if isinstance(df['A'].iloc[index], str):
        df['A'].iloc[index] = df['A'].iloc[index].str.lower().str.strip()

1 个答案:

答案 0 :(得分:3)

假设您要保持非字符串不变,可以使用:

df['A']=df['A'].apply(lambda x: x.lower().strip() if isinstance(x, str) else x)