2 回答

TA貢獻1824條經(jīng)驗 獲得超8個贊
只需設(shè)置正確的方向(默認為columns,您想要的index)。
df = pd.DataFrame.from_dict(r, orient='index')
a float64
b float64
c object
d float64
e float64
dtype: object

TA貢獻1951條經(jīng)驗 獲得超3個贊
在pandas
>= 1.0.0 中,您可以使用.convert_dtypes()
:
>>> y.convert_dtypes().dtypes
a? ? ?Int64
b? ? ?Int64
c? ? string
d? ? ?Int64
e? ? ?Int64
dtype: object
請注意,這使用新的pandas字符串類型,并且還將用于pd.NA缺失值。有一些參數(shù)會影響某些轉(zhuǎn)換:
>>> y.convert_dtypes(convert_string=False).dtypes
a? ? ?Int64
b? ? ?Int64
c? ? object
d? ? ?Int64
e? ? ?Int64
dtype: object
如果您有舊版本pandas,您可以使用pd.to_numeric某種循環(huán)或apply,如下所示:
>>> y = y.apply(pd.to_numeric, errors='ignore') # for columns that fail, do nothing
>>> y.dtypes
a? ? float64
b? ? float64
c? ? ?object
d? ? float64
e? ? float64
dtype: object
我沒有看到一種方法可以在沒有循環(huán)的情況下在整個數(shù)據(jù)幀上強制執(zhí)行數(shù)字類型(.astype()似乎不起作用,因為錯誤要么導(dǎo)致整個轉(zhuǎn)換失敗,要么如果忽略,則返回原始數(shù)據(jù)類型)。
我剛剛看到文檔解決了.transpose() 這一點:
當(dāng) DataFrame 具有混合數(shù)據(jù)類型時,我們會得到一個具有對象數(shù)據(jù)類型的轉(zhuǎn)置 DataFrame:
轉(zhuǎn)置混合類型 DatraFrame 將返回對象類型 DataFrame。為了完整起見,復(fù)制了他們的示例:
d2 = {'name': ['Alice', 'Bob'],
? ? ? 'score': [9.5, 8],
? ? ? 'employed': [False, True],
? ? ? 'kids': [0, 0]}
df2 = pd.DataFrame(data=d2)
df2_transposed = df2.transpose()
print(df2, df2.dtypes, df2_transposed, df2_transposed.dtypes, sep='\n\n')
輸出:
? ? name? score? employed? kids
0? Alice? ? 9.5? ? ?False? ? ?0
1? ? Bob? ? 8.0? ? ? True? ? ?0
#dtypes as expected
name? ? ? ? ?object
score? ? ? ?float64
employed? ? ? ?bool
kids? ? ? ? ? int64
dtype: object
? ? ? ? ? ? ? 0? ? ?1
name? ? ? Alice? ?Bob
score? ? ? ?9.5? ? ?8
employed? False? True
kids? ? ? ? ? 0? ? ?0
#dtypes are now object
0? ? object
1? ? object
dtype: object
因此,如果您希望進行轉(zhuǎn)換,則必須包含其他命令。dtypes
添加回答
舉報