将 pandas DataFrame 列的大小写转换

4

我有一个数据框,其中特定列的大小写不一致,我想让它保持一致:

In [1]: df = pd.DataFrame({"vals":["alpha","Beta","GAMMA"]})

In [2]: df
Out[2]: 
    vals
0  alpha
1   Beta
2  GAMMA

是否有一种简单的、符合Python风格的方法,可以用字符串strstr.upper()替换每个值?

3个回答

7
这应该适用于您:
df['vals'] = map(lambda x: x.upper(), df['vals'])

或者甚至:

df['vals'] = df['vals'].apply(lambda x: x.upper())

提示:在最近的版本中,您还可以:

df['vals'] = df['vals'].str.upper()

1
谢谢。我在网上搜索了很长时间,但是无法弄清楚如何做到这一点。 - vy32
版本0.18.0不够新,它给出:/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy if __name__ == '__main__':``` - vy32

3

你可以做以下操作:

df['vals'] = df['vals'].apply(lambda x: x.upper())

2

您可以直接在数据框中进行就地更改:

df["vals"].apply(lambda x: x.upper())

这里的.upper()适用于元素类型为strunicode


1
不要在版本0.18.0上使用inplace=True,因为它不存在。这个可行。 - vy32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接