3
我想從float更新列到int。在以下兩種情況下考慮df
:爲什麼要用loc和和slice分配數據幀與使用單個列不同?
df = pd.DataFrame(dict(A=[1.1, 2], B=[1., 2]))
print(df.A.dtype)
df.loc[:, ['A']] = df[['A']].astype(int)
print(df.A.dtype)
df
的D型細胞無法更新到int
但'A'
價值肯定是被截斷。
然而,
df = pd.DataFrame(dict(A=[1.1, 2], B=[1., 2]))
print(df.A.dtype)
df.loc[:, 'A'] = df.A.astype(int)
print(df.A.dtype)
df
的作品就好了。
這些行爲有不同的理由嗎?
有趣的發現。它似乎工作,只要你的loc選擇不涉及列的[[]]。也就是說,'df.loc [:,'A'] = df [['A']]。astype(int)'像'df.loc [:,'A'] = df.A.astype(int )'。 –
雖然這並不構成可靠的理由,但這些差異可能與以下事實有關:在第一種情況下,您正在更改「DataFrame」的數據類型,而在第二種情況下,您正在更改數據類型'Series'。 – Abdou
如果使用「df [['A']] = df [['A']]。astype(int)」,它將返回A,類型爲int64 ...我想這與loc和[]有關函數詳細的方式,也許還要求在https://github.com/pandas-dev/pandas/issues會得到更好的結果 – linpingta