首页 > 解决方案 > 在空的 Pandas DataFrame 中插入单元格

问题描述

我需要将一些值存储在一个空的 Pandas 数据框中。类似的东西:

      | col1  col2  col3
------------------------
row1  |  v1    v2    v3
row2  |  v4    v5    v6
row3  |  v7    v8    v9

我从其他来源获取单元格ex: (row2, col3, v6),但我事先不知道我将拥有多少行和多少列。

我试图以这种方式填充我的 DataFrame,但它不起作用:

import pandas as pd

df = pd.DataFrame()

df["col1"] = ""
df["col2"] = ""
df["col3"] = ""

df["col1"].loc["row1"] = "v1"
df["col2"].loc["row2"] = "v4"
df["col3"].loc["row3"] = "v9"
# ...

当我想显示 DataFrame 时,

print(df)

它显示为一个空的 DataFrame。

Empty DataFrame
Columns: [col1, col2, col3]
Index: []

出于好奇,我尝试了

print(df["col1"])

我得到:

row1    v1
row2    v4
row3    v7
Name: col1, dtype: object

print(df.loc["row1"])

返回KeyError异常。

好吧,我想我有一个索引问题,但我不知道如何解决它,而且我在第一次插入后无法使用df.set_index,因为我有其他限制。

我也试过这个:

df = pd.DataFrame(columns=("some_name",))
df.set_index("some_name", inplace=True)

但它也失败了。

任何的想法 ?我想我只需要在开始插入数据之前设置一个空索引,但我不知道如何。

标签: pythonpython-3.xpandas

解决方案


这样,您可以使用pd.loc()方法添加值: import pandas as pd df = pd.DataFrame()

df["col1"] = ""
df["col2"] = ""
df["col3"] = ""

df.loc["row1", "col1"] = "v1"
df.loc["row2", "col2"] = "v4"
df.loc["row3", "col3"] = "v9"

产生以下输出:

在此处输入图像描述


推荐阅读