मेरे पास एक CSV फ़ाइल है जिसमें निम्न पंक्तियाँ हैं:

"दिसंबर 30, 2021", "1,234.11", "1,654.22", "11,876.23", "1,676,234"

मैंने पिछली post से सीखा है जिसका मैं उपयोग कर सकता हूं:

parse_dates=['Date']

तारीख को पार्स करने के लिए (जो काम करता है)। हालाँकि मैं कॉलम 2-4 को np.float64 और कॉलम 5 को int64 के रूप में चाहूंगा। मैं उसे कैसे प्राप्त कर सकता हूं?

मैंने यह कोशिश की है:

data = pd.read_csv("file.csv",  parse_dates=['Date'], dtype=[np.datetime64, np.float64, np.float64, np.float64, np.float64, np.int64])

लेकिन मुझे मिलता है

TypeError: data type not understood
0
M.E. 3 जिंदा 2022, 19:23
1
आपके कॉलम का नाम है या नहीं?
 – 
Corralien
3 जिंदा 2022, 19:35
हाँ उनके नाम हैं
 – 
M.E.
3 जिंदा 2022, 19:50

2 जवाब

सबसे बढ़िया उत्तर

thousands पैरामीटर का प्रयोग करें।

df = pd.read_csv("file.csv",  parse_dates=['Date'], thousands=',')
3
Emma 3 जिंदा 2022, 19:35

यदि आपके पास विशेष प्रारूप है तो converters पैरामीटर का प्रयोग करें।

converters = {
    'Date': lambda x: datetime.strptime(x, "%b %d, %Y"),
    'Number': lambda x: float(x.replace(',', ''))
}
df = pd.read_csv('data.csv', converters=converters)

आउटपुट:

>>> df
        Date   Number
0 2021-12-30  2345.55

>>> df.dtypes
Date      datetime64[ns]
Number           float64
dtype: object

# data.csv
Date,Number
"Dec 30, 2021","2,345.55"

अन्य मानक मापदंडों का उपयोग करें:

df = pd.read_csv("data.csv",  header=None, parse_dates=[0], thousands=',', quoting=1)

आउटपुट:

>>> df
           0        1        2         3        4
0 2021-12-30  1234.11  1654.22  11876.23  1676234

>>> df.dtypes
0    datetime64[ns]
1           float64
2           float64
3           float64
4             int64
dtype: object
0
Corralien 3 जिंदा 2022, 19:40
धन्यवाद, यह बहुत व्यापक है। मैंने thousands= उत्तर चुना क्योंकि यह पांडा में अधिक मुहावरेदार/सरल लगता है।
 – 
M.E.
3 जिंदा 2022, 19:52