Pandas如何在单个数据帧单元中放置数组?

2024-10-05 13:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我现在有一个数据帧,看起来像:

Current Dataframe

我想添加一个名为“predicators”的全新列,其中只有一个单元格包含数组。在

所以[0,'predicters']应该包含一个数组,并且同一列中该单元格下面的所有内容都应该是空的。在

这是我的尝试,我试图创建一个只包含“predicators”列的单独的dataframe,并尝试将其附加到当前dataframe中,但是我得到了:“长度不匹配:预期的轴有3个元素,新值有4个元素。”

如何将包含数组的单个单元格追加到数据帧?在

# create a list and dataframe to hold the names of predictors
dataframe=dataframe.drop(['price','Date'],axis=1)  
predictorsList = dataframe.columns.get_values().tolist()
predictorsList = np.array(predictorsList, dtype=object)

# Combine actual and forecasted lists to one dataframe
combinedResults = pd.DataFrame({'Actual': actual, 'Forecasted': forecasted})

predictorsDF = pd.DataFrame({'Predictors': [predictorsList]})

# Add Predictors to dataframe
#combinedResults.at[0, 'Predictors'] = predictorsList
pd.concat([combinedResults,predictorsDF], ignore_index=True, axis=1)

Tags: andto数据元素dataframe数组pdaxis
2条回答

您需要先更改列的对象类型(在您的例子中是Predictors

import pandas as pd
import numpy as np


df=pd.DataFrame(np.arange(20).reshape(5,4), columns=list('abcd'))
df=df.astype(object)  # this line allows the signment of the array
df.iloc[1,2] = np.array([99,99,99])
print(df)

给予

^{pr2}$

您可以用NaN填充所需列中的其余单元格,但它们不会“空”。为此,请在两个索引上使用pd.merge

设置

import pandas as pd
import numpy as np

df = pd.DataFrame({
     'Actual': [18.442, 15.4233, 20.6217, 16.7, 18.185], 
     'Forecasted': [19.6377, 13.1665, 19.3992, 17.4557, 14.0053]
})

arr = np.zeros(3)
df_arr = pd.DataFrame({'Predictors': [arr]})

合并df和df_arr

^{pr2}$

结果

>>> print(result)
    Actual  Forecasted       Predictors
0  18.4420     19.6377  [0.0, 0.0, 0.0]
1  15.4233     13.1665              NaN
2  20.6217     19.3992              NaN
3  16.7000     17.4557              NaN
4  18.1850     14.0053              NaN

>>> result.loc[0, 'Predictors']
array([0., 0., 0.])

>>> result.loc[1, 'Predictors'] # actually contains a NaN value
nan 

相关问题 更多 >

    热门问题