我有一个数据集,它有一列,看起来像这样

Badge Number
1
3
23 / gold
22 / silver
483

我只需要数字.这是我的代码:

df = pd.read_excel('badges.xlsx')
df['Badge Number'] = df['Badge Number'].str.extract('(\d+)')
print(df)

我期待的结果是:

Badge Number
1
3
23
22
483

但我得到了

Badge Number
Nan
Nan
23
22
Nan

为了测试,我将数据帧转储到了.csv并用pd读回.read_csv().这只给了我需要的数字(though of course that's not a solution)

我也试过了

df['Badge Number'] = np.where(df['Badge Number'].str.isnumeric(), df['Badge Number'], df['Badge Number'].str.extract('(\d+)'))

但这给了我所有的1.我知道我在try 我甚至一点都不懂的事情,但我希望有一个简单的解决方案.

推荐答案

另一个选项是,在读取XLS时,将列指定为字符串.

使用dtype={'Badge Number': str}

df = pd.read_excel('badges.xlsx',dtype={'Badge Number': str})
df['Badge Number'] = df['Badge Number'].str.extract('(\\d+)')

Python相关问答推荐

试图找到Python方法来部分填充numpy数组

为什么tkinter框架没有被隐藏?

如何检测背景有噪的图像中的正方形

可变参数数量的重载类型(args或kwargs)

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

基于字符串匹配条件合并两个帧

Python键入协议默认值

基于索引值的Pandas DataFrame条件填充

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

如何在turtle中不使用write()来绘制填充字母(例如OEG)

为什么numpy. vectorize调用vectorized函数的次数比vector中的元素要多?

如何在PySide/Qt QColumbnView中删除列

手动设置seborn/matplotlib散点图连续变量图例中显示的值

将一个双框爆炸到另一个双框的范围内

如何写一个polars birame到DuckDB

查找查找表中存在的列值组合

用由数据帧的相应元素形成的列表的函数来替换列的行中的值

如何将一个文件的多列导入到Python中的同一数组中?

如何在python tkinter中绑定键盘上的另一个回车?