Jan*_*anB 2 python string numeric dataframe pandas
我有一个Pandas Dataframe,它的列看起来像这样:
df:
Column0 Column1 Column2
'MSC' '1' 'R2'
'MIS' 'Tuesday' '22'
'13' 'Finance' 'Monday'
Run Code Online (Sandbox Code Playgroud)
因此,总的来说,这些列中包含实际字符串,但也包含字符串格式的数字值(整数)。
我发现了一篇关于pd.to_numeric和astype()方法的不错的文章,但是我看不到是否或如何在我的情况下使用它们。
使用方法:
pd.to_numeric(df, errors = 'ignore')
Run Code Online (Sandbox Code Playgroud)
只是导致跳过整个列。除了跳过整个列,我只想跳过那些无法转换的列中的字符串,转到下一个条目并尝试转换下一个字符串。
因此,最后,我的数据框将如下所示:
df:
Column0 Column1 Column2
'MSC' 1 'R2'
'MIS' 'Tuesday' 22
13 'Finance' 'Monday'
Run Code Online (Sandbox Code Playgroud)
是否有一种有效的方法可以遍历这些列并实现这一目标?
最好的问候,扬
编辑: 感谢您的所有建议!由于我仍然是python初学者,因此@coldspeed和@sacul的答案对我来说更容易理解,因此我将与其中之一一起使用!
100%同意这些评论-在性能方面,在列中混合dtypes是一个糟糕的主意。
作为参考,我将使用pd.to_numeric和进行此操作fillna:
df2 = df.apply(pd.to_numeric, errors='coerce').fillna(df)
print(df2)
Column0 Column1 Column2
0 MSC 1 R2
1 MIS Tuesday 22
2 13 Finance Monday
Run Code Online (Sandbox Code Playgroud)
列被object强制转换为dtype以防止强制转换。提取时,您会看到以下内容values:
print(df2.values.tolist())
[['MSC', 1.0, 'R2'], ['MIS', 'Tuesday', 22.0], [13.0, 'Finance', 'Monday']]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3001 次 |
| 最近记录: |