2016-09-22 110 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