2 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
我想這兩個(gè)loc和iloc(未測(cè)試iloc)將指向該數(shù)據(jù)幀的具體指標(biāo)。他們不復(fù)制該行。
您可以使用該copy()行上的方法來解決您的問題。
import pandas as pd
import numpy as np
INDEX=['0', '1', '2', '3', '4']
COLUMNS=['A','B','C']
df=pd.DataFrame(index=INDEX, columns=COLUMNS)
np.random.seed(5)
for idx in INDEX:
df.loc[idx] = np.random.randint(-100, 100, 3)
print("First state")
a_row = df.loc["3"]
a_row_cp = a_row.copy()
print(df)
print("---\n")
print(a_row)
print("\n==================================\n\n\n")
for idx in INDEX:
df.loc[idx] = np.random.randint(-100, 100, 3)
print("Second state")
print(df)
print("---\n")
print(a_row)
print("---\n")
print(a_row_cp)

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
根據(jù)官方文檔
df.loc[] = value
變成
df.loc.__setitem__((slice())), value)
所以沒有在任何地方創(chuàng)建的原始數(shù)據(jù)框的副本。該操作是在原始數(shù)據(jù)框的視圖上完成的。這是建議的分配方式。.
df.loc[]
保證df
本身具有修改的索引行為,因此df.loc.__getitem__
/df.loc.__setitem__
直接對(duì) df 進(jìn)行操作。
問題和不確定性(查看與復(fù)制)始于鏈?zhǔn)剿饕那闆r,您可以在此處閱讀更多信息。
另外,請(qǐng)注意,有時(shí) pandas 的分配警告可能是誤報(bào) -> 即當(dāng)您正確使用df.loc[]
分配但收到警告告訴您應(yīng)該使用df.loc[]
...
添加回答
舉報(bào)