使用索引的时间戳添加到Pandas DataFrame会创建新列



我有一个从CSV读取数据的脚本,我想在DF可用时将新数据附加到它。不幸的是,当我这样做的时候,我总是会得到新的专栏。当我打印((时,CSV的DF看起来是这样的

df = pd.read_csv(filename, index_col=0, parse_dates=True)
Temp    RH
Time                            
2021-05-17 11:08:34  51.08  77.9
2021-05-17 11:10:30  51.08  77.0
2021-05-17 11:10:35  50.72  71.9
2021-05-17 11:10:41  50.72  71.8
2021-05-17 11:12:19  50.72  71.6
...                    ...   ...
2021-05-24 17:13:57  55.22  70.2
2021-05-24 17:14:02  55.22  69.6
2021-05-24 17:14:08  55.22  68.1
2021-05-24 17:14:18  54.86  66.9
2021-05-24 17:14:29  54.68  69.3

我使用以下内容创建一个用于测试的伪新df

timeStamp = datetime.now()
timeStamp = timeStamp.strftime("%m-%d-%Y %H:%M:%S")
t = 51.06
h = 69.3
data = {'Temp': t, 'RH': h}
newDF = pd.DataFrame(data, index = pd.to_datetime([timeStamp]) )
print(newDF)

这给了我

Temp    RH
2021-05-24 17:28:32  51.06  69.3

以下是我调用append((时的输出

print(df.append([df, pd.DataFrame(newDF)], ignore_index = False))
Temp    RH   Temp    RH
2021-05-17 11:08:34  51.08  77.9    NaN   NaN
2021-05-17 11:10:30  51.08  77.0    NaN   NaN
2021-05-17 11:10:35  50.72  71.9    NaN   NaN
2021-05-17 11:10:41  50.72  71.8    NaN   NaN
2021-05-17 11:12:19  50.72  71.6    NaN   NaN
...                    ...   ...    ...   ...
2021-05-24 17:14:02  55.22  69.6    NaN   NaN
2021-05-24 17:14:08  55.22  68.1    NaN   NaN
2021-05-24 17:14:18  54.86  66.9    NaN   NaN
2021-05-24 17:14:29  54.68  69.3    NaN   NaN
2021-05-24 17:28:32    NaN   NaN  51.06  69.3
[223293 rows x 4 columns]

和concat((

df1 = pd.concat([df, newDF], ignore_index=False)
print(df1)
Temp    RH   Temp    RH
2021-05-17 11:08:34  51.08  77.9    NaN   NaN
2021-05-17 11:10:30  51.08  77.0    NaN   NaN
2021-05-17 11:10:35  50.72  71.9    NaN   NaN
2021-05-17 11:10:41  50.72  71.8    NaN   NaN
2021-05-17 11:12:19  50.72  71.6    NaN   NaN
...                    ...   ...    ...   ...
2021-05-24 17:14:02  55.22  69.6    NaN   NaN
2021-05-24 17:14:08  55.22  68.1    NaN   NaN
2021-05-24 17:14:18  54.86  66.9    NaN   NaN
2021-05-24 17:14:29  54.68  69.3    NaN   NaN
2021-05-24 17:28:32    NaN   NaN  51.06  69.3
[111647 rows x 4 columns]

而不是

print(df.append([df, pd.DataFrame(newDF)], ignore_index = False))

我认为这就是保留每个唯一数据帧的列,只需对原始数据帧本身调用append即可。

尝试

df = df.append(newDF, ignore_index = False)

最新更新