我需要将一些值存储在一个空的Pandas Dataframe中。像这样的东西:
| 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)
但它也失败了。
有什么主意吗?我想我只需要在开始插入数据之前设置一个空索引,但是我不知道如何。
答案 0 :(得分:4)
这样,您可以使用pd.loc()方法添加值: 将熊猫作为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"
产生以下输出: