我有一个大型数据框:
z1.ix[1:2]
index LocalTime Temp TempDiff TempNormal DewPoint
1 5/16/2018 1:00:00 AM 66.92 -3.89 55.22 66.92 NaN
2 5/16/2018 2:00:00 AM 66.92 -3.31 53.47 66.02 NaN
以上是使用pandas.read_csv
如何重命名列,使其显示如下:
z1.ix[1:2]
LocalTime Temp TempDiff TempNormal DewPoint
1 5/16/2018 1:00:00 AM 66.92 -3.89 55.22 66.92
2 5/16/2018 2:00:00 AM 66.92 -3.31 53.47 66.02
列名称向左移动一个位置,最后一列被删除。
df.rename(columns={'oldCol':'newCol'})
是重命名列的繁琐方法,因为z1的列数约为300。
编辑: 我的csv文件有:
NA-KBWI Hourly Forecast Made May 16 2018 1510 UTC
LocalTime Temp TempDiff TempNormal DewPoint Cloud Cover FeelsLikeTemp
5/16/2018 0:00 68 -3.38 57.5 66.92 100 68
5/16/2018 1:00 66.92 -3.89 55.22 66.92 100 66.92
5/16/2018 2:00 66.92 -3.31 53.47 66.02 100 66.92
5/16/2018 3:00 66.92 -2.37 52.88 66.02 100 66.92
我使用以下代码:
pandas.read_csv('myCSV.csv', skiprows=[0])
答案 0 :(得分:2)
怎么样?
df.drop('DewPoint', axis=1)
.rename(columns=dict(zip(df.columns[:-1],df.columns[1:])))
答案 1 :(得分:1)
你可以这样做:
df.columns = df.columns[1:].tolist() + ['DropMe']
df.drop('DropMe', axis=1, inplace=True)
输出:
Temp TempDiff TempNormal DewPoint
1 5/16/2018 1:00:00 AM 66.92 -3.89 55.22
2 5/16/2018 2:00:00 AM 66.92 -3.31 53.47
答案 2 :(得分:1)
请考虑以下代码:
new_col = list(pd.Series(list(df.columns)).shift(-1).dropna())
df = df.drop(list(df.columns)[-1], axis=1)
df.columns = new_col
答案 3 :(得分:1)
更容易使用read_csv command中的标记index_col = False
,您应该从一开始就避免这个问题。
否则你可以这样做:
old_cols = df.columns.values
#delete the right-most row, which for you is NaN
del df[old_cols[-1]]
new_cols = old_cols[1:]
df.columns = new_cols
答案 4 :(得分:1)
从我收集的内容中,您试图将所有列名称都移除。
rename_dict = {}
for i in range(len(z1.keys()) - 1):
rename_dict[z1.keys()[i]] = z1.keys()[i+1]
z1.index.names = [z1.keys()[0]]
z1 = z1.drop(df.keys()[-1], axis=1)
print(rename_dict)
z1.rename(columns=rename_dict)
这应该可以解决问题