我读了一个巨大的Excel文件,其中每个偶数列(例如,0,2)是天数,下一列是位置。每个位置具有不同的长度。作为一个小例子,这里有一个样本 Dataframe 。
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
data = {
'Unnamed: 0': [1.8, 2, 5.9],
'Location A': [0.2, 0.3, 0.87],
'Unnamed: 2': [6, 7],
'Location B': [1.5, 2.0],
'Unnamed: 4': [11],
'Location C': [],
'Unnamed: 6': [16.7, 17, 18, 19.6, 26,72.9],
'Location D': [3.5, 4.0, 5.5, 6.0, 7.5, 8.0]
}
max_len = max([len(v) for v in data.values()])
for key in data.keys():
if len(data[key]) < max_len:
data[key].extend([np.nan] * (max_len - len(data[key])))
df = pd.DataFrame(data)
因为偶数列没有标题,所以当我使用pd.read_excel
时,它们被保存为Unnamed
。我想用下面的逻辑把它转换成一个新的 Dataframe 。设date_value = pd.to_datetime('2023-01-01', format='%Y-%m-%d')
.
第一列是位置的名称,第二列是date_value + timedelta(days=days_to_add)
,其中days_to_add是Unnamed列中的值,第三列是Location列下的值。
Location A 2023-01-02 0.2
Location A 2023-01-03 0.3
Location A 2023-01-06 0.87
...
Location D 2023-03-12 8
2条答案
按热度按时间gjmwrych1#
将
unstack
与assign
配合使用:输出:
xmakbtuz2#
使用
unstack
和concat
:输出: