我有一个从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)