2016-09-22 197 views
1

我想多個CSV文件加載到一個單一的數據幀DF而創建新的列和usecols:大熊貓read_csv同時

  • 將列名
  • 添加和填充新的列(站)
  • 排除列(QD之一)

,直到我試圖排除與usecols一列,它引發錯誤Too many columns specified: expected 5 and found 4所有這一切工作正常。

是否有可能創建一個新的列並同時傳遞usecols?

我在創建&的原因是在read_csv期間填充新的「工作站」列是我的數據幀將包含來自多個工作站的數據。我可以通過在一個語句中執行read_csv來解決錯誤,並在下一個QD列中刪除df.drop('QD', axis=1, inplace=True),但想確保我理解如何以最可熊的方式執行此操作。

下面是引發錯誤的代碼:

df = pd.concat(pd.read_csv("http://lgdc.uml.edu/common/DIDBGetValues?ursiCode=" + row['StationCode'] + "&charName=MUFD&DMUF=3000", 
          skiprows=17, 
          delim_whitespace=True, 
          parse_dates=[0], 
          usecols=['Time','CS','MUFD','Station'], 
          names=['Time','CS','MUFD','QD','Station'] 
       ).fillna(row['StationCode'] 
       ).set_index(['Time', 'Station']) 
       for index, row in stationdf.iterrows()) 

例StationCode從stationdf BC840。 數據樣本2016-09-19T00:00:05.000Z 100 19.34 //

回答

0

您可以使用運營商一個新列assign鏈接:

df = pd.read_csv(...).assign(StationCode=row['StationCode']) 
+0

謝謝。感覺用filllna很髒,但想繼續前進,看看我會面臨哪些其他問題。 – AF7TI

+0

哈哈呀'fillna'是一個很奇怪的方式來做到這一點! – maxymoo