我有一個熊貓資料框,我創建如下:
df = pd.DataFrame(columns= [["A","B","C"]] )
df["A"] = np.arange(1, 8761, 1)
A 列包含從 1 到 8760 的值。 B 列和 C 列中包含 NaN 值。它看起來如下:

df.info() 回傳以下資訊:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8760 entries, 0 to 8759
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 (A,) 8760 non-null int64
1 (B,) 0 non-null object
2 (C,) 0 non-null object
dtypes: int64(1), object(2)
memory usage: 205.4 KB
我希望 B 列中的值與 A 列中的值相同。當我嘗試時
df["B"] = df["A"]
B 列仍然有 NaN 值。但是當我創建一個新列時,
df["D"] = df["A"]
,列 D 與列 A 具有相同的值。
我可以在 B 列中獲得與 A 中相同的值,使用
df.iloc[:,1] = df.iloc[:, 0]
但我很好奇為什么我第一次使用時沒有得到它`
df["B"] = df["A"]
`?
uj5u.com熱心網友回復:
這是因為您正在創建一個 MultiIndex:
df = pd.DataFrame(columns=[["A","B","C"]]) # <- note the list of list
df["A"] = np.arange(1, 8761, 1)
df.columns
輸出:
MultiIndex([('A',),
('B',),
('C',)],
)
因此,您需要df[('B',)] = df[('A',)]進行正確的分配。
如果您想要一個簡單的索引,則可能應該撰寫正確的代碼:
df = pd.DataFrame(columns=["A","B","C"])
df["A"] = np.arange(1, 8761, 1)
df["B"] = df["A"]
輸出:
>>> df.head()
A B C
0 1 1 NaN
1 2 2 NaN
2 3 3 NaN
3 4 4 NaN
4 5 5 NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/352622.html
