pandas read_csv同时创建新列和usecols

时间:2016-09-22 22:35:42

标签: python-3.x pandas

我尝试将多个csv文件加载到单个数据帧df中,同时:

  • 添加列名称
  • 添加并填充新列(Station)
  • 排除其中一列(QD)

所有这一切都正常,直到我尝试使用usecols排除列,这会引发错误Too many columns specified: expected 5 and found 4

是否可以同时创建新列并传递usecols?

我创造的原因&填充一个新的电台' read_csv期间的列是我的数据帧将包含来自多个站的数据。我可以通过在一个语句中执行read_csv并使用df.drop('QD', axis=1, inplace=True)删除下一个QD列来解决错误,但是要确保我了解如何以最可能的方式执行此操作。

这里是抛出错误的代码:

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())

来自stationdf BC840的示例StationCode。 数据样本2016-09-19T00:00:05.000Z 100 19.34 //

1 个答案:

答案 0 :(得分:0)

您可以使用assign的操作员链接创建新列:

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