重塑 pandas 中的数据
Reshape data in pandas
我有一个 csv 文件,当读入 pandas 时会生成以下格式的数据框
0 1 2 3 4 5 6
Day Time 2020-05-01 00:00 2020-05-02 00:00 2020-05-03 00:00 2020-05-04 00:00 2020-05-05 00:00
Night 23:00:00 33 45 33 23 19
Night 1900-01-01 00:00 33 45 33 23 19
Night 1900-01-01 01:00 33 45 33 23 19
Night 1900-01-01 02:00 33 45 33 23 19
Night 1900-01-01 03:00 33 41 23 23 19
Night 1900-01-01 04:00 33 41 23 23 19
有没有办法将第一行转换为 pandas 中的新列,将数据输出为
0 1 2 3 4 5 6
Day Time Date
Night 23:00 2020-05-01 33 45 33 23 19
Night 00:00 2020-05-02 33 45 33 23 19
Night 01:00 2020-05-03 33 45 33 23 19
Night 02:00 2020-05-04 33 45 33 23 19
Night 03:00 2020-05-05 33 41 23 23 19
Night 04:00 2020-05-06 33 41 23 23 19
第一步是按第二行获取列名:
df = pd.read_csv(file, header=[1])
然后拆分 Time
列 replace
:
df['Time'] = df['Time'].str.split().str[-1].str.replace(':00:00', ':00')
将新列添加到第 3 个位置
df.insert(2, 'Date', pd.date_range(df.columns[2], periods=len(df)))
设置新列名称:
df.columns = df.columns[:3].tolist() + np.arange(3, len(df.columns)).tolist()
print (df)
Day Time Date 3 4 5 6 7
0 Night 23:00 2020-05-01 33 45 33 23 19
1 Night 00:00 2020-05-02 33 45 33 23 19
2 Night 01:00 2020-05-03 33 45 33 23 19
3 Night 02:00 2020-05-04 33 45 33 23 19
4 Night 03:00 2020-05-05 33 41 23 23 19
5 Night 04:00 2020-05-06 33 41 23 23 19
我有一个 csv 文件,当读入 pandas 时会生成以下格式的数据框
0 1 2 3 4 5 6
Day Time 2020-05-01 00:00 2020-05-02 00:00 2020-05-03 00:00 2020-05-04 00:00 2020-05-05 00:00
Night 23:00:00 33 45 33 23 19
Night 1900-01-01 00:00 33 45 33 23 19
Night 1900-01-01 01:00 33 45 33 23 19
Night 1900-01-01 02:00 33 45 33 23 19
Night 1900-01-01 03:00 33 41 23 23 19
Night 1900-01-01 04:00 33 41 23 23 19
有没有办法将第一行转换为 pandas 中的新列,将数据输出为
0 1 2 3 4 5 6
Day Time Date
Night 23:00 2020-05-01 33 45 33 23 19
Night 00:00 2020-05-02 33 45 33 23 19
Night 01:00 2020-05-03 33 45 33 23 19
Night 02:00 2020-05-04 33 45 33 23 19
Night 03:00 2020-05-05 33 41 23 23 19
Night 04:00 2020-05-06 33 41 23 23 19
第一步是按第二行获取列名:
df = pd.read_csv(file, header=[1])
然后拆分 Time
列 replace
:
df['Time'] = df['Time'].str.split().str[-1].str.replace(':00:00', ':00')
将新列添加到第 3 个位置
df.insert(2, 'Date', pd.date_range(df.columns[2], periods=len(df)))
设置新列名称:
df.columns = df.columns[:3].tolist() + np.arange(3, len(df.columns)).tolist()
print (df)
Day Time Date 3 4 5 6 7
0 Night 23:00 2020-05-01 33 45 33 23 19
1 Night 00:00 2020-05-02 33 45 33 23 19
2 Night 01:00 2020-05-03 33 45 33 23 19
3 Night 02:00 2020-05-04 33 45 33 23 19
4 Night 03:00 2020-05-05 33 41 23 23 19
5 Night 04:00 2020-05-06 33 41 23 23 19