我在 python 中有一個像這樣的資料框:
data = [['a_subj.163', 1], ['b_subj.164', 2], ['c_subj.165', 3]]
df = pd.DataFrame(data, columns = ['subj', 'mean'])
subj mean
0 a_subj.163 1
1 b_subj.164 2
2 c_subj.165 3
我需要取 subj 以 'a.subj' 開頭的平均值,并將其添加到一個名為mean_a.
我嘗試了以下但得到一個TypeError: 'DataFrame' object is not callable:
df['mean_a'] = np.where(df(subj.startswith("a_subj")), mean, '')
我也試過這個,我沒有收到錯誤,但沒有創建新變數:
for subj in df:
if subj.startswith('a_subj'):
df['mean_a'] = mean
關于我哪里出錯的任何建議?
uj5u.com熱心網友回復:
你說你想把它放在一個“新變數”中,但你的代碼似乎試圖將平均值放入一個新列中。如果您的目標是將其放入變數,請嘗試:
mean_a = df['mean'][df.subj.str.startswith('a_subj')].mean()
uj5u.com熱心網友回復:
我知道有更好的答案,但是如果您想使用 for 回圈,您可以這樣做:
df["mean_a"] = "" # remove this line if you want nan in the rest of the values
for i, row in df.iterrows():
if row.subj.startswith('a_subj'):
df.at[i, 'mean_a'] = row["mean"]
uj5u.com熱心網友回復:
在這里,您正在呼叫 DataFrame 而不是訪問它
np.where(df(subj.startswith("a_subj")), mean, '')
要訪問,您需要使用方括號:
np.where(df[subj.startswith("a_subj")], mean, '')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343743.html
上一篇:如何限制文本檔案中字串的數量
