我有一个如下所示的数据框:
# Create an example dataframe about a fictional army
raw_data = {'regiment': ['Nighthawks', 'Nighthawks', 'Nighthawks', 'Nighthawks'],
'company': ['1st', '1st', '2nd', '2nd'],
'deaths': ['kkk', 52, '25', 616],
'battles': [5, '42', 2, 2],
'size': ['l', 'll', 'l', 'm']}
df = pd.DataFrame(raw_data, columns = ['regiment', 'company', 'deaths', 'battles', 'size'])
我的目标是将数据帧中的每个字符串都转换为大写,以便如下所示:
注意:所有数据类型都是对象,不能更改;输出必须包含所有对象。我不想把每一列都一一转换。。。我希望尽可能在整个数据帧上执行此操作。
我到目前为止所做的是这样做,但没有成功
df.str.upper()
这可以通过以下applymap操作解决:
由于
str
仅适用于序列,因此可以将其分别应用于每个列,然后连接:编辑:性能比较
两个答案在一个小数据帧上的性能相同。
在一个大数据帧上,我的回答稍微快一点。
astype()将把每个序列强制转换为dtype对象(字符串),然后对转换后的序列调用str()方法以逐字获取字符串并对其调用函数upper()。注意,在此之后,所有列的数据类型都将更改为object。
稍后,您可以使用to_numeric()将“battles”列再次转换为数值:
相关问题 更多 >
编程相关推荐