Pandas 将索引列分配给空数据帧

Pandas 将索引列分配给空数据帧,pandas,dataframe,Pandas,Dataframe,我正在创建一个空的数据框,然后我希望一次向一行添加数据。我想在第一列上建立索引,'customer\u ID' 我有这个: In[1]: df = pd.DataFrame(columns = ['customer_ID','a','b','c'],index=['customer_ID']) In[2]: df Out[3]: customer_ID a b c customer_ID NaN NaN NaN NaN 所以已经

我正在创建一个空的数据框,然后我希望一次向一行添加数据。我想在第一列上建立索引,
'customer\u ID'

我有这个:

In[1]: df = pd.DataFrame(columns = ['customer_ID','a','b','c'],index=['customer_ID'])
In[2]: df
Out[3]: 
            customer_ID    a    b    c
customer_ID         NaN  NaN  NaN  NaN
所以已经有一行我不想要的
NaN

我可以将索引指向第一列而不添加一行数据吗?

是。。。如果您愿意,您可以随时
dropna

df = df.set_index('customer_ID').dropna()
df

因为在创建数据帧时,数据帧中没有任何行

df= pd.DataFrame({'customer_ID': ['2'],'a': ['1'],'b': ['A'],'c': ['1']})
df.set_index('customer_ID',drop=False)
df

我认为,@JD Long暗示的答案是在seprate指令中设置索引:

In[1]: df = pd.DataFrame(columns = ['customer_ID','a','b','c'])
In[2]: df.set_index('customer_ID',inplace = True)
In[3]: df
Out[3]: 
Empty DataFrame
Columns: [customer_ID, a, b, c]
Index: []
然后,我可以添加行:

In[4]: id='x123'
In[5]: df.loc[id]=[id,4,5,6]
In[6]: df
Out[7]: 
 customer_ID    a    b    c
x123        x123  4.0  5.0  6.0

不,我不希望数据帧中有行-我希望它为空。稍后我将在循环中填充它:一次添加一行通常是一个坏主意。每次这样做时,pandas都必须为整个数据帧制作一个新的副本,这将为您提供O(N^2)性能。有趣的评论-我正在迭代一个包含csv文件的文件夹,处理每个文件,并提取有关客户的关键统计信息,并将其添加到df中。另一种方法是使用完整的客户列表作为索引和空数据创建df,然后一次填写一行数据。这会避免复制吗?df.set_index('customer_ID')行没有效果,因为它不会更改
df
对象,而是返回一个新的数据帧。您需要使用inplace=True。对我来说,这仅在我使用
df.loc[id]=[4,5,6]
而不是
df.loc[id]=[id,4,5,6]
时有效。当索引将其从“列”中删除时,似乎设置了“id”。