Pandas:将对象转换为字符串

3

我有以下数据框:

    R_fighter       B_fighter           win_by                  last_round  Referee         date            Winner
0   Adrian Yanez    Gustavo Lopez       KO/TKO                  3           Chris Tognoni   March 20, 2021  Adrian Yanez
1   Trevin Giles    Roman Dolidze       Decision - Unanimous    3           Herb Dean       March 20, 2021  Trevin Giles
2   Tai Tuivasa     Harry Hunsucker     KO/TKO                  1           Herb Dean       March 20, 2021  Tai Tuivasa
3   Cheyanne Buys   Montserrat Conejo   Decision - Unanimous    3           Mark Smith      March 20, 2021  Montserrat Conejo
4   Marion Reneau   Macy Chiasson       Decision - Unanimous    3           Mark Smith      March 20, 2021  Macy Chiasson

我想将列win_by的类型从object转换为str。 我使用这里建议的.astype()函数:

UFC_db['win_by'] = UFC_db['win_by'].astype('|S')

但是什么也没有改变:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6012 entries, 0 to 6011
Data columns (total 7 columns):
 #   Column      Non-Null Count  Dtype 
---  ------      --------------  ----- 
 0   R_fighter   6012 non-null   object
 1   B_fighter   6012 non-null   object
 2   win_by      6012 non-null   object
 3   last_round  6012 non-null   object
 4   Referee     6012 non-null   object
 5   date        6012 non-null   object
 6   Winner      6012 non-null   object
dtypes: object(7)
memory usage: 328.9+ KB

我也尝试过

UFC_db['win_by'] = UFC_db['win_by'].astype('str')

UFC_db['win_by'] = UFC_db['win_by'].astype(str)

UFC_db['win_by'] = UFC_db['win_by'].astype('str',errors ="ignore")

如提议所示Python - 通过 "astype" 进行的 pandas 列类型转换未生效

但仍然没有改变


你尝试过 UFC_db['win_by'] = UFC_db['win_by'].astype("|S") 吗? - Casey Knight
是的,CaseyKnight,这是我第一次尝试! - paolopazzo
2个回答

3

我尝试了许多方法,但我发现这是唯一一个对我有效并将对象转换为文本的方法。

df['column'].astype('string') 

1
我意识到object并不是问题,相反,是pandas用于字符串或混合类型的类型(https://pbpython.com/pandas_dtypes.html)。 更准确地说:
Pandas dtype Python type NumPy type Usage
object str或混合类型 string_、unicode_、混合类型 文本或混合数字和非数字值
int64 int int_、int8、int16、int32、int64、uint8、uint16、uint32、uint64 整数
float64 float float_、float16、float32、float64 浮点数
实际上,如果我打印单个单元格的类型,它会给我str
type(UFC_db.at[0,'Referee'])

str

作为一个字符串,我可以用另一个字符串来改变它

UFC_db.at[0,'Referee'] = 'XXXXXX'
UFC_db.at[0,'Referee']

"XXXXXX"

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