将行添加到 Pandas DataFrame 会重复索引
Adding a row to a Pandas DataFrame that would duplicate index
我有一个 DataFrame,其索引类型为 datetime 对象。我最终将使用 HDFStore.append 将此 DataFrame 写入 HDF5 文件。我添加了很多需要写入此 HDF5 文件的行。如果我对每一行都使用 HDFStore.append,这会花费很长时间。如果我先在 DataFrame 中收集所有内容,我 运行 内存不足。所以我需要间歇性地分块并写入 HDF5。
df = DataFrame([['Bob','Mary']], columns=['Boy', 'Girl'], index=[datetime.today()])
现在我想用相同的索引向其中添加另一行
row = ['John', 'Sue']
使用 .loc 或 .ix 替换现有行
df.loc[datetime.today()] = row
使用追加有效,但对我来说太慢了
new_df = DataFrame([row], columns=df.columns, index=[datetime.today()])
df.append(new_df)
有更好的方法吗?
创建一个列表列表并制作一个数据框比追加更快。既然你已经在创建小块的数据帧,为什么不一次性创建呢:
In [1303]: pd.DataFrame([[0,1], [1,2], [2,3]], index=[pd.datetime.today()] * 3)
Out[1303]:
0 1
2015-05-07 09:02:30.327473 0 1
2015-05-07 09:02:30.327473 1 2
2015-05-07 09:02:30.327473 2 3
我有一个 DataFrame,其索引类型为 datetime 对象。我最终将使用 HDFStore.append 将此 DataFrame 写入 HDF5 文件。我添加了很多需要写入此 HDF5 文件的行。如果我对每一行都使用 HDFStore.append,这会花费很长时间。如果我先在 DataFrame 中收集所有内容,我 运行 内存不足。所以我需要间歇性地分块并写入 HDF5。
df = DataFrame([['Bob','Mary']], columns=['Boy', 'Girl'], index=[datetime.today()])
现在我想用相同的索引向其中添加另一行
row = ['John', 'Sue']
使用 .loc 或 .ix 替换现有行
df.loc[datetime.today()] = row
使用追加有效,但对我来说太慢了
new_df = DataFrame([row], columns=df.columns, index=[datetime.today()])
df.append(new_df)
有更好的方法吗?
创建一个列表列表并制作一个数据框比追加更快。既然你已经在创建小块的数据帧,为什么不一次性创建呢:
In [1303]: pd.DataFrame([[0,1], [1,2], [2,3]], index=[pd.datetime.today()] * 3)
Out[1303]:
0 1
2015-05-07 09:02:30.327473 0 1
2015-05-07 09:02:30.327473 1 2
2015-05-07 09:02:30.327473 2 3