将元组插入空的熊猫数据框

时间:2018-10-06 17:26:51

标签: python pandas loc

我想在空的DataFrame中插入一行。但是,对于具有预定义索引的DataFrame以及当元素包含提示错误的元组或列表时,这似乎失败:

  

ValueError:设置具有序列的数组元素。

示例代码如下:

df = pd.DataFrame(columns=['idx1', 'idx2', 'col1', 'col2', 'col3'])
df.set_index(['idx1', 'idx2'], inplace=True)
df.loc[(1,2),:] = [3,4,(5,6)]
print(df)

2 个答案:

答案 0 :(得分:2)

尚不清楚列表中的元素对应于不同列中的值。您可以先将列表转换为由DataFrame的列索引的Series:

df = pd.DataFrame(columns=['idx1', 'idx2', 'col1', 'col2', 'col3'])
df.set_index(['idx1', 'idx2'], inplace=True)
df.loc[(1,2),:] = pd.Series([3,4,(5,6)], index=df.columns)
print(df)

答案 1 :(得分:0)

我尝试过类似的事情。

def with_return(row):
    t = [5,6]
    return t

df = pd.DataFrame(columns=['idx1', 'idx2', 'col1', 'col2', 'col3'])
df.set_index(['idx1', 'idx2'], inplace=True)
df.loc[(1,2),:] = [3,4,5]  #dummy element
df['col3'] = df.apply(with_return, axis=1)
print(df)

或仅使用系列,

df.loc[(1,2),:] = pd.Series([3,4,(5,6)], index=df.columns)

仍然没有将元组作为元素直接插入空的DataFrame中。但这只是另一种方式。不过,loc应该能够处理它。