簡體   English   中英

如何在 pandas 中使用正則表達式對列進行排序?

[英]How to sort a column using regex in pandas?

在“新案例”列中,我大約有以下值:

+10 000 , + 1000 , + 100+ 10, 0

我的代碼:

import re
import pandas as pd
iris = pd.read_csv('Covid-19.csv')
a = iris['New Cases'].str.contains[r'+[d{5}]']
iris.sort_values(a)

堆棧跟蹤:

------------------------------------------------------------------
TypeError                        Traceback (most recent call last)
<ipython-input42-291424a61469> in <module>
        2 import pandas as pd
        3 iris = pd.read_csv('Covid-19.csv')
------> 4 a = iris['New Cases'].str.contains[r'+[d{5}]']
        5 iris.sort_values(a)

TypeError 'method' object is not subscriptable

您可以使用

iris['New Cases'] = iris['New Cases'].astype(str).str.replace(r'\D+', '').astype(int)

首先,您需要將數據轉換為字符串類型( .astype(str) ),然后刪除所有不是數字的字符( .str.replace(r'\D+', '') ),然后將結果轉換為一個 int (帶有.astype(int) )。

Python pandas 測試:

data = { 'New Cases': ['+1,370', '+6,740', '+1,159', 0, '+9,625']}
df = pd.DataFrame(data)
df['New Cases'].astype(str).str.replace(r'\D+', '').astype(int)
#    0    1370
#    1    6740
#    2    1159
#    3       0
#    4    9625
#    Name: New Cases, dtype: int32

pd.DataFrame.str.contains是一個方法,所以你需要調用它。 嘗試:

iris['New Cases'].str.contains(r'+[d{5}]')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM