कैसे कन्वर्ट करने के लिए एक स्तंभ के साथ वस्तु dtype में फ्लोट करने के लिए एक पांडा dataframe?

0

सवाल

मैं एक dataframe के साथ एक स्तंभ का नाम है 'ऊंचाई' और मैं चाहते हैं के लिए मूल्यों को बदलने में तैरने लगते हैं. डिफ़ॉल्ट इकाई में है मीटर है, लेकिन यह कुछ मूल्यों में गलत प्रारूप, या इंच में. यह की तरह लग रहा है

        height
0          16
1           7
2           7
3         6 m
4        2.40
5        5'8"
6          3m
7         6,9
8       9;6;3
9     Unknown
10       4.66
11 Bilinmiyor
12     11' 4"

dtype: object

असल में, मैं करने के लिए की जरूरत में मूल्यों को बदलने इंच/फुट करने के लिए मीटर इकाई के मूल्यों को बदलने की तरह Bilinmiyor और Unknown करने के लिए NaNनिकालने के लिए , इकाई विनिर्देश की तरह m m, जगह में अल्पविराम दशमलव संख्या के साथ .और सबसे बड़ी संख्या के लिए मूल्य 9;6;3. अंतिम dtypes होना चाहिए फ्लोट या int.

मैं नया हूँ करने के लिए अजगर तो मैं सच में पता नहीं कैसे उपयोग करने के लिए उन्नत तकनीक इतनी दूर है. मैं कोशिश कर रहा था को प्राप्त करने के लिए कार्य का उपयोग कर

def to_num(a):
    try:
        return float(pd.to_numeric(a, errors = 'raise'))
    except ValueError:
        return a

df['height'] = to_num(df['height'])

लेकिन यह काम नहीं किया । मैं सोच रहा था कि अगर मैं का उपयोग करना चाहिए चलना लेकिन यह बहुत जटिल लगता है पुनरावृति करने के लिए सभी कोशिकाओं के माध्यम से इस स्तंभ में है, क्योंकि डेटासेट गया है, 2 लाख से अधिक पंक्तियाँ हैं.

pandas python
2021-11-24 04:44:20
1

सबसे अच्छा जवाब

0

मुझे लगता है कि तुम मेट, मैं उसी तरह की समस्याओं. लेकिन शुक्र है कि यह है कि मुश्किल नहीं है

import pandas as pd

df = pd.DataFrame({'height': [16, 7, '6m', '2.4', '3,5', 'Asdf', '9;6;3']})
df['height'] = df['height'].astype(str)  # force type str
df['height'] = df['height'].str.replace('.', ',', regex=False)  # . -> ,
df['height'] = df['height'].str.replace('[A-Za-z]', '')  # remove all characters (regex)
df['height'] = df['height'].str.split(';').apply(max)  # pick largest value from 9;6;3
df['height'] = pd.to_numeric(df['height'], errors='coerce')  # force float

और आप

height
0   16.0
1   7.0
2   6.0
3   2.4
4   3.5
5   NaN
6   9.0

अब अगर आप चाहते हैं करने के लिए कन्वर्ट करने के लिए अपने पैरों मीटर (मैं मान रहा हूँ डिफ़ॉल्ट मीटर), आप की आवश्यकता होगी करने के लिए जोड़ने के लिए एक स्तर के रंग

import pandas as pd
import numpy as np
import re

def feet_to_m(s):
    if '\'' in s or "\"" in s:
        if '\'' in s:
            feet = float(s.split('\'')[0])
        else:
            feet = 0
        if '\"' in s:
            if '\'' in s:
                inch = float(s.split('\'')[1].split('\"')[0])
            else:
                inch = float(s.split('\"')[0])
        else:
            inch = 0
        return (feet*12 + inch) * 0.0254
    else:
        return s

df = pd.DataFrame({'height': [16, 7, '6m', '2.4', '3,5', 'Asdf', '9;6;3', "11' 4\"", "4'", "15\""]})
df['height'] = df['height'].astype(str)  # force type str
df['height'] = df['height'].str.replace(',', '.', regex=False)  # . -> ,
df['height'] = df['height'].str.replace('[A-Za-z]', '')  # remove all characters
df['height'] = df['height'].str.split(';').apply(max)  # pick largest value from 9;6;3
df['height'] = df['height'].apply(feet_to_m)
df['height'] = pd.to_numeric(df['height'], errors='coerce')  # force float

प्राप्त करने के लिए

height
0   16.0000
1   7.0000
2   6.0000
3   2.4000
4   3.5000
5   NaN
6   9.0000
7   3.4544
8   1.2192
9   0.3810

आशा है कि इस मदद करता है

2021-11-24 06:02:07

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में