如何更改pd.数据帧基于一个条件?

2024-06-26 02:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有国际足联数据集,其中包括有关足球运动员的信息。这个数据集的一个特点是足球运动员的价值,但它是字符串形式的,如“30万美元”或“50万美元”。我怎样才能简单地删除这些欧元和“M,K”符号,并用相同的单位写出它们的值呢?你知道吗

import numpy as np
import pandas as pd

location = r'C:\Users\bemrem\Desktop\Python\fifa\fifa_dataset.csv'

_dataframe = pd.read_csv(location)

_dataframe = _dataframe.dropna()
_dataframe = _dataframe.reset_index(drop=True)
_dataframe = _dataframe[['Name', 'Value', 'Nationality', 'Age', 'Wage', 
'Overall', 'Potential']]

_array = ['Belgium', 'France', 'Brazil', 'Croatia', 'England',' Portugal', 
'Uruguay', 'Switzerland', 'Spain', 'Denmark']

_dataframe = _dataframe.loc[_dataframe['Nationality'].isin(_array)]
_dataframe = _dataframe.reset_index(drop=True) 


print(_dataframe.head())
print()
print(_dataframe.tail())

我试图转换此值列,但失败了。这就是我得到的

           Name   Value Nationality  Age   Wage  Overall  Potential
0        Neymar   €123M      Brazil   25  €280K       92         94
1     L. Suárez    €97M     Uruguay   30  €510K       92         92
2     E. Hazard  €90.5M     Belgium   26  €295K       90         91
3  Sergio Ramos    €52M       Spain   31  €310K       90         90
4  K. De Bruyne    €83M     Belgium   26  €285K       89         92

              Name Value Nationality  Age Wage  Overall  Potential
4931    A. Kilgour  €40K     England   19  €1K       47         56
4932      R. White  €60K     England   18  €2K       47         65
4933     T. Sawyer  €50K     England   18  €1K       46         58
4934     J. Keeble  €40K     England   18  €1K       46         56
4935  J. Lundstram  €60K     England   18  €1K       46         64

但我想我的输出是这样的:

           Name   Value Nationality  Age   Wage  Overall  Potential
0        Neymar   123      Brazil   25  €280K       92         94
1     L. Suárez    97     Uruguay   30  €510K       92         92
2     E. Hazard  90.5     Belgium   26  €295K       90         91
3  Sergio Ramos    52       Spain   31  €310K       90         90
4  K. De Bruyne    83     Belgium   26  €285K       89         92

              Name Value Nationality  Age Wage  Overall  Potential
4931    A. Kilgour  0.04     England   19  €1K       47         56
4932      R. White  0.06     England   18  €2K       47         65
4933     T. Sawyer  0.05     England   18  €1K       46         58
4934     J. Keeble  0.04     England   18  €1K       46         56
4935  J. Lundstram  0.06     England   18  €1K       46         64

Tags: 数据namedataframeagevaluepotentialprintbrazil
1条回答
网友
1楼 · 发布于 2024-06-26 02:21:43

我没有足够的声誉来标记一个重复的答案。但是,我相信这将解决您的特殊问题,如果您的字符串中没有“K”或“M”,那么除了提供一个解决方案之外。你知道吗

您还需要在regex中用替换$。你知道吗

Convert the string 2.90K to 2900 or 5.2M to 5200000 in pandas dataframe

相关问题 更多 >