เปลี่ยนชนิดข้อมูลของคอลัมน์ใน Pandas


804

Pandas DataFrameฉันต้องการที่จะแปลงตารางแสดงเป็นรายการของรายการที่เป็น ในฐานะที่เป็นตัวอย่างที่ง่ายมาก:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)

วิธีที่ดีที่สุดในการแปลงคอลัมน์เป็นประเภทที่เหมาะสมคืออะไรในกรณีนี้คอลัมน์ 2 และ 3 เป็นแบบลอย มีวิธีระบุชนิดขณะแปลงเป็น DataFrame หรือไม่ หรือจะเป็นการดีกว่าถ้าสร้าง DataFrame ก่อนจากนั้นวนรอบคอลัมน์เพื่อเปลี่ยนชนิดของแต่ละคอลัมน์ โดยหลักการแล้วฉันต้องการทำสิ่งนี้แบบไดนามิกเพราะอาจมีหลายร้อยคอลัมน์และฉันไม่ต้องการระบุว่าคอลัมน์ใดเป็นประเภทใด ทั้งหมดที่ฉันรับประกันได้คือแต่ละคอลัมน์มีค่าประเภทเดียวกัน


ฉันเคยเห็นวิธีการแปลงทุกคอลัมน์และวิธีการแปลงคอลัมน์ที่มีชื่อเฉพาะ แต่แล้วคอลัมน์บางอย่างที่ตรงตามเงื่อนไขบางอย่างเมื่อคุณไม่สามารถแสดงรายการ 100 คอลัมน์ที่คุณต้องการแปลงพร้อมกัน ฉันคิดเช่น float64 ทั้งหมด -> float32 หรือกลยุทธ์การประหยัดหน่วยความจำอื่น ๆ
demongolem

@demongolem: คุณสามารถทำสิ่งต่าง ๆ เช่นdf.apply(pd.to_numeric, downcast="integer", errors="ignore")การลดคอลัมน์จำนวนเต็มไปยัง dtype ที่น้อยที่สุด (จำนวนเต็ม) ที่จะเก็บค่าไว้
Alex Riley

คำตอบ:


1190

คุณมีสามตัวเลือกหลักสำหรับการแปลงประเภทในนุ่น:

  1. to_numeric()- จัดให้มีฟังก์ชั่นการแปลงประเภทที่ไม่ใช่ตัวเลข (เช่นสตริง) ได้อย่างปลอดภัยเป็นประเภทตัวเลขที่เหมาะสม (ดูเพิ่มเติมที่to_datetime()และto_timedelta().)

  2. astype()- แปลง (เกือบ) ประเภทใด ๆ เป็น (เกือบ) ประเภทอื่น ๆ (แม้ว่าจะไม่จำเป็นต้องทำเช่นนั้น) ยังช่วยให้คุณสามารถแปลงเป็นประเภท categorial (มีประโยชน์มาก)

  3. infer_objects() - วิธีการยูทิลิตี้ในการแปลงคอลัมน์วัตถุที่ถือวัตถุหลามเป็นชนิดแพนด้าถ้าเป็นไปได้

อ่านรายละเอียดเพิ่มเติมเกี่ยวกับคำอธิบายและการใช้งานของแต่ละวิธี


1 to_numeric()

วิธีที่ดีที่สุดในการแปลงหนึ่งหรือมากกว่าหนึ่งคอลัมน์ของ DataFrame pandas.to_numeric()ไปเป็นค่าตัวเลขคือการใช้งาน

ฟังก์ชันนี้จะพยายามเปลี่ยนวัตถุที่ไม่ใช่ตัวเลข (เช่นสตริง) เป็นจำนวนเต็มหรือตัวเลขทศนิยมตามความเหมาะสม

การใช้งานขั้นพื้นฐาน

อินพุตto_numeric()เป็น Series หรือคอลัมน์เดียวของ DataFrame

>>> s = pd.Series(["8", 6, "7.5", 3, "0.9"]) # mixed string and numeric values
>>> s
0      8
1      6
2    7.5
3      3
4    0.9
dtype: object

>>> pd.to_numeric(s) # convert everything to float values
0    8.0
1    6.0
2    7.5
3    3.0
4    0.9
dtype: float64

อย่างที่คุณเห็นซีรีส์ใหม่จะถูกส่งคืน อย่าลืมกำหนดผลลัพธ์นี้ให้กับตัวแปรหรือชื่อคอลัมน์เพื่อใช้งานต่อไป:

# convert Series
my_series = pd.to_numeric(my_series)

# convert column "a" of a DataFrame
df["a"] = pd.to_numeric(df["a"])

คุณสามารถใช้มันเพื่อแปลงหลายคอลัมน์ของ DataFrame ด้วยapply()วิธีการ:

# convert all columns of DataFrame
df = df.apply(pd.to_numeric) # convert all columns of DataFrame

# convert just columns "a" and "b"
df[["a", "b"]] = df[["a", "b"]].apply(pd.to_numeric)

ตราบใดที่ค่าของคุณสามารถแปลงได้นั่นก็เป็นสิ่งที่คุณต้องการ

การจัดการข้อผิดพลาด

แต่ถ้าหากค่าบางอย่างไม่สามารถแปลงเป็นประเภทตัวเลขได้

to_numeric()ยังใช้errorsอาร์กิวเมนต์คำหลักที่ช่วยให้คุณสามารถบังคับให้ค่าที่ไม่ใช่ตัวเลขNaNหรือเพียงแค่ละเว้นคอลัมน์ที่มีค่าเหล่านี้

นี่คือตัวอย่างการใช้ชุดของสตริงsที่มีวัตถุ dtype:

>>> s = pd.Series(['1', '2', '4.7', 'pandas', '10'])
>>> s
0         1
1         2
2       4.7
3    pandas
4        10
dtype: object

พฤติกรรมเริ่มต้นคือการเพิ่มถ้ามันไม่สามารถแปลงค่า ในกรณีนี้มันไม่สามารถรับมือกับสตริง 'pandas':

>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')
ValueError: Unable to parse string

แทนที่จะล้มเหลวเราอาจต้องการให้ 'แพนด้า' ถูกพิจารณาว่าเป็นตัวเลขที่หายไป / ไม่ดี เราสามารถบีบบังคับค่าที่ไม่ถูกต้องNaNเป็นดังนี้โดยใช้errorsอาร์กิวเมนต์คำหลัก:

>>> pd.to_numeric(s, errors='coerce')
0     1.0
1     2.0
2     4.7
3     NaN
4    10.0
dtype: float64

ตัวเลือกที่สามสำหรับerrorsเพียงเพื่อละเว้นการดำเนินการหากพบค่าที่ไม่ถูกต้อง:

>>> pd.to_numeric(s, errors='ignore')
# the original Series is returned untouched

ตัวเลือกสุดท้ายนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการแปลง DataFrame ทั้งหมดของคุณ แต่ไม่ทราบว่าคอลัมน์ใดของเราที่สามารถแปลงเป็นประเภทตัวเลขได้อย่างน่าเชื่อถือ ในกรณีนั้นเพียงแค่เขียน:

df.apply(pd.to_numeric, errors='ignore')

ฟังก์ชั่นจะถูกนำไปใช้กับแต่ละคอลัมน์ของ DataFrame คอลัมน์ที่สามารถแปลงเป็นประเภทตัวเลขจะถูกแปลงในขณะที่คอลัมน์ที่ไม่สามารถ (เช่นมีสตริงหรือวันที่ที่ไม่ใช่ตัวเลข) จะถูกทิ้งไว้ตามลำพัง

Downcasting

ตามค่าเริ่มต้นการแปลงด้วยto_numeric()จะให้ a int64หรือfloat64dtype (หรือความกว้างของจำนวนเต็มใด ๆ ที่เป็นพื้นฐานของแพลตฟอร์มของคุณ)

โดยปกติแล้วเป็นสิ่งที่คุณต้องการ แต่ถ้าคุณต้องการที่จะบันทึกหน่วยความจำบางส่วนและใช้รูปแบบที่กะทัดรัดกว่าเช่นfloat32หรือint8?

to_numeric()ให้ตัวเลือกแก่คุณในการลดระดับลงเป็น 'จำนวนเต็ม', 'ลงนาม', 'ไม่ได้ลงนาม', 'ลอย' นี่คือตัวอย่างสำหรับชุดsจำนวนเต็มแบบง่าย ๆ:

>>> s = pd.Series([1, 2, -7])
>>> s
0    1
1    2
2   -7
dtype: int64

การลดระดับลงเป็น 'จำนวนเต็ม' ใช้จำนวนเต็มที่น้อยที่สุดเท่าที่จะเป็นไปได้ซึ่งสามารถเก็บค่าได้:

>>> pd.to_numeric(s, downcast='integer')
0    1
1    2
2   -7
dtype: int8

Downcasting เป็น 'float' ในทำนองเดียวกันจะเลือกประเภทลอยที่เล็กกว่าปกติ:

>>> pd.to_numeric(s, downcast='float')
0    1.0
1    2.0
2   -7.0
dtype: float32

2 astype()

astype()วิธีช่วยให้คุณมีความชัดเจนเกี่ยวกับ dtype ที่คุณต้องการ DataFrame หรือซีรีส์ของคุณมี มีหลากหลายมากที่คุณสามารถลองใช้จากประเภทหนึ่งไปยังอีกประเภทหนึ่ง

การใช้งานขั้นพื้นฐาน

เพียงเลือกประเภท: คุณสามารถใช้ NumPy dtype (เช่นnp.int16) ประเภท Python บางประเภท (เช่นบูล) หรือประเภทเฉพาะของแพนด้า (เช่นประเภทเด็ดขาด)

เรียกวิธีการบนวัตถุที่คุณต้องการแปลงและastype()จะลองและแปลงให้คุณ:

# convert all DataFrame columns to the int64 dtype
df = df.astype(int)

# convert column "a" to int64 dtype and "b" to complex type
df = df.astype({"a": int, "b": complex})

# convert Series to float16 type
s = s.astype(np.float16)

# convert Series to Python strings
s = s.astype(str)

# convert Series to categorical type - see docs for more details
s = s.astype('category')

แจ้งให้ทราบastype()ล่วงหน้าฉันพูดว่า "ลอง" - หากไม่ทราบวิธีการแปลงค่าในซีรีส์หรือ DataFrame มันจะเพิ่มข้อผิดพลาด ตัวอย่างเช่นหากคุณมีNaNหรือinfค่าคุณจะได้รับข้อผิดพลาดในการพยายามแปลงให้เป็นจำนวนเต็ม

ตั้งแต่ pandas 0.20.0 ข้อผิดพลาดนี้สามารถถูกระงับได้โดยผ่าน errors='ignore'ข้อผิดพลาดนี้สามารถระงับโดยผ่าน วัตถุดั้งเดิมของคุณจะถูกส่งคืนโดยไม่มีการแตะต้อง

ระวัง

astype()มีประสิทธิภาพ แต่บางครั้งมันจะแปลงค่า "ไม่ถูกต้อง" ตัวอย่างเช่น:

>>> s = pd.Series([1, 2, -7])
>>> s
0    1
1    2
2   -7
dtype: int64

เหล่านี้เป็นจำนวนเต็มขนาดเล็กดังนั้นวิธีการแปลงเป็นประเภท 8 บิตที่ไม่ได้ลงชื่อเพื่อบันทึกหน่วยความจำ

>>> s.astype(np.uint8)
0      1
1      2
2    249
dtype: uint8

การแปลงใช้งานได้ แต่ -7 ถูกพันเป็น 249 (เช่น 2 8 - 7)!

การพยายามดาวน์สตรีมโดยใช้pd.to_numeric(s, downcast='unsigned')แทนที่จะช่วยป้องกันข้อผิดพลาดนี้ได้


3 infer_objects()

เวอร์ชัน 0.21.0 ของนุ่นนำเสนอวิธีการinfer_objects()สำหรับการแปลงคอลัมน์ของ DataFrame ที่มีประเภทข้อมูลวัตถุเป็นประเภทที่เฉพาะเจาะจงมากขึ้น (การแปลงแบบนุ่ม)

ตัวอย่างเช่นนี่คือ DataFrame ที่มีสองคอลัมน์ประเภทวัตถุ หนึ่งเก็บจำนวนเต็มจริงและอื่น ๆ ถือสตริงแทนจำนวนเต็ม:

>>> df = pd.DataFrame({'a': [7, 1, 5], 'b': ['3','2','1']}, dtype='object')
>>> df.dtypes
a    object
b    object
dtype: object

ใช้infer_objects()คุณสามารถเปลี่ยนประเภทของคอลัมน์ 'a' เป็น int64:

>>> df = df.infer_objects()
>>> df.dtypes
a     int64
b    object
dtype: object

คอลัมน์ 'b' ถูกทิ้งไว้ตามลำพังเนื่องจากค่าเป็นสตริงไม่ใช่จำนวนเต็ม หากคุณต้องการลองและบังคับให้การแปลงทั้งสองคอลัมน์เป็นประเภทจำนวนเต็มคุณสามารถใช้df.astype(int)แทนได้


8
นอกจากนี้ยังแตกต่างจาก. Delicious (float) สิ่งนี้จะแปลงสตริงเป็น NaNs แทนที่จะทำให้เกิดข้อผิดพลาด
Rob

11
.convert_objectsเลิกใช้แล้วตั้งแต่0.17- ใช้df.to_numericแทน
Matti Lyra

4
ขอบคุณ - ฉันควรอัปเดตคำตอบนี้ มันอาจจะเป็นที่น่าสังเกตว่าและวิธีการของมันจะทำงานเฉพาะในคอลัมน์หนึ่งในช่วงเวลาที่แตกต่างจากpd.to_numeric convert_objectsการอภิปรายเกี่ยวกับฟังก์ชั่นการเปลี่ยนใน API ดูเหมือนจะเป็นอย่างต่อเนื่อง ; ฉันหวังว่าวิธีการที่ใช้ได้กับ DataFrame ทั้งหมดจะยังคงอยู่เพราะมีประโยชน์มาก
Alex Riley

เป็นวิธีที่ดีที่สุดที่คุณแปลงคอลัมน์ทั้งหมดที่มีอยู่การพูดint64เพื่อint32?
RoyalTS

4
@RoyalTS: อาจจะดีที่สุดในการใช้งานastype(ในขณะที่คำตอบอื่น ๆ ) .astype(numpy.int32)คือ
Alex Riley

447

แล้วเรื่องนี้ล่ะ

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
df
Out[16]: 
  one  two three
0   a  1.2   4.2
1   b   70  0.03
2   x    5     0

df.dtypes
Out[17]: 
one      object
two      object
three    object

df[['two', 'three']] = df[['two', 'three']].astype(float)

df.dtypes
Out[19]: 
one       object
two      float64
three    float64

10
ใช่ pd.DataFrameมีdtypeข้อโต้แย้งที่อาจทำให้คุณไม่ต้องการ df = pd.DataFrame (a, คอลัมน์ = ['หนึ่ง', 'สอง', 'สาม'], dtype = float) ใน [2]: df.dtypes ออก [2]: วัตถุหนึ่งสองตัว 64 64 float64 dtype: วัตถุ
hernamesbarbara

17
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_index,col_indexer] = value insteadเมื่อฉันพยายามที่เป็นข้อเสนอแนะที่ฉันได้รับการแจ้งเตือน สิ่งนี้อาจได้รับการแนะนำให้รู้จักกับแพนด้ารุ่นใหม่กว่าและฉันไม่เห็นอะไรผิดปกติ แต่ฉันแค่สงสัยว่าคำเตือนนี้เกี่ยวข้องกับอะไร ความคิดใด ๆ
สีส้ม

2
@ หรือจัดรูปแบบคำเตือนเพื่อเตือนผู้ใช้ถึงพฤติกรรมที่สับสนระหว่างการดำเนินการที่ถูกล่ามโซ่ ดูstackoverflow.com/questions/20625582/…และที่เกี่ยวข้อง
A.

19
นั่นเป็นวิธีการที่ดี แต่มันไม่ทำงานเมื่อมี NaN อยู่ในคอลัมน์ ไม่มีความคิดว่าทำไม NaN ไม่สามารถอยู่ได้ NaN เมื่อทำการโฟลทไปยัง int:ValueError: Cannot convert NA to integer
Vitaly Isaev

7
@GatesBates ใช่ในพจนานุกรม df = pd.DataFrame(a, columns=['one', 'two', 'three'], dtype={'one': str, 'two': int, 'three': float}). ฉันมีปัญหาในการหาข้อมูลจำเพาะสำหรับค่า "dtype" ที่ยอมรับ รายการจะดี (ปัจจุบันฉันทำdict(enumerate(my_list)))
FichteFoll

39

รหัสด้านล่างนี้จะเปลี่ยนประเภทข้อมูลของคอลัมน์

df[['col.name1', 'col.name2'...]] = df[['col.name1', 'col.name2'..]].astype('data_type')

แทนที่ชนิดข้อมูลคุณสามารถให้ประเภทข้อมูลของคุณได้เช่นคุณต้องการ str, float, int เป็นต้น


ใจคุณว่าเมื่อใช้นี้ในคอลัมน์ที่มีสตริง `` ` 'ทรู'` `` และ `` ` 'เท็จ'` `` ใช้ data_type ทุกอย่างจะเปลี่ยนไปbool True
H. Vabri

ตัวเลือกนี้คุณสามารถแปลงเป็นประเภท "หมวดหมู่"
neves

17

เมื่อฉันต้องการระบุคอลัมน์เฉพาะและฉันต้องการชัดเจนฉันใช้ (ต่อDOCS LOCATION ):

dataframe = dataframe.astype({'col_name_1':'int','col_name_2':'float64', etc. ...})

ดังนั้นใช้คำถามเดิม แต่ให้ชื่อคอลัมน์กับมัน ...

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['col_name_1', 'col_name_2', 'col_name_3'])
df = df.astype({'col_name_2':'float64', 'col_name_3':'float64'})

15

นี่คือฟังก์ชั่นที่รับอาร์กิวเมนต์ DataFrame และรายการของคอลัมน์และรวมข้อมูลทั้งหมดในคอลัมน์เข้ากับตัวเลข

# df is the DataFrame, and column_list is a list of columns as strings (e.g ["col1","col2","col3"])
# dependencies: pandas

def coerce_df_columns_to_numeric(df, column_list):
    df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce')

ดังนั้นสำหรับตัวอย่างของคุณ:

import pandas as pd

def coerce_df_columns_to_numeric(df, column_list):
    df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce')

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['col1','col2','col3'])

coerce_df_columns_to_numeric(df, ['col2','col3'])

ถ้าคุณต้องการใช้ดัชนีคอลัมน์แทนที่จะเป็นชื่อคอลัมน์ล่ะ
jvalenti

8

วิธีการเกี่ยวกับการสร้างสองไฟล์ข้อมูลแต่ละชนิดมีชนิดข้อมูลที่แตกต่างกันสำหรับคอลัมน์ของพวกเขาแล้วผนวกเข้าด้วยกัน?

d1 = pd.DataFrame(columns=[ 'float_column' ], dtype=float)
d1 = d1.append(pd.DataFrame(columns=[ 'string_column' ], dtype=str))

ผล

In[8}:  d1.dtypes
Out[8]: 
float_column     float64
string_column     object
dtype: object

หลังจากสร้าง dataframe แล้วคุณสามารถเติมข้อมูลด้วยตัวแปรทศนิยมในคอลัมน์ที่ 1 และสตริง (หรือชนิดข้อมูลใด ๆ ที่คุณต้องการ) ในคอลัมน์ที่ 2


4

แพนด้า> = 1.0

นี่คือแผนภูมิที่สรุปการแปลงที่สำคัญที่สุดในนุ่น

ป้อนคำอธิบายรูปภาพที่นี่

การแปลงเป็นสตริงนั้นไม่สำคัญ.astype(str)และไม่แสดงในรูปภาพ

การแปลง "ยาก" เทียบกับ "อ่อน"

โปรดทราบว่า "การแปลง" ในบริบทนี้อาจหมายถึงการแปลงข้อมูลข้อความเป็นประเภทข้อมูลจริง (การแปลงฮาร์ด) หรือการสรุปประเภทข้อมูลที่เหมาะสมกว่าสำหรับข้อมูลในคอลัมน์วัตถุ (การแปลงแบบอ่อน) เพื่อแสดงความแตกต่างลองดู

df = pd.DataFrame({'a': ['1', '2', '3'], 'b': [4, 5, 6]}, dtype=object)
df.dtypes                                                                  

a    object
b    object
dtype: object

# Actually converts string to numeric - hard conversion
df.apply(pd.to_numeric).dtypes                                             

a    int64
b    int64
dtype: object

# Infers better data types for object data - soft conversion
df.infer_objects().dtypes                                                  

a    object  # no change
b     int64
dtype: object

# Same as infer_objects, but converts to equivalent ExtensionType
df.convert_dtypes().dtypes                                                     

1

ฉันคิดว่าฉันมีปัญหาเดียวกัน แต่จริงๆแล้วฉันมีความแตกต่างเล็กน้อยที่ทำให้การแก้ปัญหาง่ายขึ้น สำหรับคนอื่นที่ดูคำถามนี้คุณควรตรวจสอบรูปแบบของรายการอินพุตของคุณ ในกรณีของฉันตัวเลขในตอนแรกลอยไม่สตริงเช่นเดียวกับในคำถาม:

a = [['a', 1.2, 4.2], ['b', 70, 0.03], ['x', 5, 0]]

แต่ด้วยการประมวลผลรายการมากเกินไปก่อนที่จะสร้างดาต้าเฟรมฉันเสียประเภทและทุกอย่างกลายเป็นสตริง

การสร้างเฟรมข้อมูลผ่านอาเรย์ numpy

df = pd.DataFrame(np.array(a))

df
Out[5]: 
   0    1     2
0  a  1.2   4.2
1  b   70  0.03
2  x    5     0

df[1].dtype
Out[7]: dtype('O')

ให้กรอบข้อมูลเดียวกับในคำถามโดยที่รายการในคอลัมน์ 1 และ 2 ถูกพิจารณาว่าเป็นสตริง อย่างไรก็ตามการทำ

df = pd.DataFrame(a)

df
Out[10]: 
   0     1     2
0  a   1.2  4.20
1  b  70.0  0.03
2  x   5.0  0.00

df[1].dtype
Out[11]: dtype('float64')

จริงให้กรอบข้อมูลกับคอลัมน์ในรูปแบบที่ถูกต้อง


0

เริ่มต้นนุ่น 1.0.0 pandas.DataFrame.convert_dtypesเรามี คุณสามารถควบคุมประเภทของการแปลงได้!

In [40]: df = pd.DataFrame(
    ...:     {
    ...:         "a": pd.Series([1, 2, 3], dtype=np.dtype("int32")),
    ...:         "b": pd.Series(["x", "y", "z"], dtype=np.dtype("O")),
    ...:         "c": pd.Series([True, False, np.nan], dtype=np.dtype("O")),
    ...:         "d": pd.Series(["h", "i", np.nan], dtype=np.dtype("O")),
    ...:         "e": pd.Series([10, np.nan, 20], dtype=np.dtype("float")),
    ...:         "f": pd.Series([np.nan, 100.5, 200], dtype=np.dtype("float")),
    ...:     }
    ...: )

In [41]: dff = df.copy()

In [42]: df 
Out[42]: 
   a  b      c    d     e      f
0  1  x   True    h  10.0    NaN
1  2  y  False    i   NaN  100.5
2  3  z    NaN  NaN  20.0  200.0

In [43]: df.dtypes
Out[43]: 
a      int32
b     object
c     object
d     object
e    float64
f    float64
dtype: object

In [44]: df = df.convert_dtypes()

In [45]: df.dtypes
Out[45]: 
a      Int32
b     string
c    boolean
d     string
e      Int64
f    float64
dtype: object

In [46]: dff = dff.convert_dtypes(convert_boolean = False)

In [47]: dff.dtypes
Out[47]: 
a      Int32
b     string
c     object
d     string
e      Int64
f    float64
dtype: object
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.