我看不到我的問題在哪裏,這段代碼對於一個非常簡單的例子工作正常,但是當我開始使用我的真實數據時,我遇到了問題。爲什麼我的熊貓數據框變成'None'類型?
我基本上是從各種csv文件中提取某些數據,並試圖最終將它們合併到一個數據框中。
相關部分的代碼如下:
wavenames = ['W1_', 'W2_', 'W3_']
logs=['log1','log2','log3','log4']
for w in wavenames:
AllSynt = pd.DataFrame(index=range(6341), columns=['X']+logs)
AllSynt['X']=z # an array extracted from elsewhere
print AllSynt.head(3)
for f in files:
for l in logs:
if (f.startswith('Synthetic_'+w)) & (f.endswith(l+'.csv')):
df = pd.read_csv(path+f,delimiter=',')
AllSynt = pd.DataFrame(AllSynt)
AllSynt = AllSynt.merge(df,how='left',on='X')
AllSynt = AllSynt.rename(columns = {'Y':l}, inplace = True)
print '\n', AllSynt.head(5)
,但是這給了我AttributeError: 'NoneType' object has no attribute 'head'
(確保該AllSynt是在循環開始時的熊貓數據幀之前,我得到了同樣的錯誤(剛。說它有沒有屬性「合併」)爲什麼我的AllSynt數據框永久地變成一個None
當您在'rename'操作期間提供'inplace = True'時,不需要將結果重新分配給變量。這就是爲什麼,這些返回值爲「無」值。 –
謝謝,這有些幫助(所有的值都是'NaN',但至少它是一個數據框)。但是我仍然懷疑 - 正如問題中提到的那樣,在重命名過程之前的循環開始處已經出現了「無」值。那是爲什麼? – durbachit
這是因爲你已經填充了它的柱面名稱,而只用預定義數組填充對應於'X'的值。 'logs'中的元素(*構成列名*)在它們下面沒有任何值,所以它們自然被'NaN''填充。 –