Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫df.x27;添加新列后无法工作_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫df.x27;添加新列后无法工作

Python 熊猫df.x27;添加新列后无法工作,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含118列的熊猫数据框,我想添加一个新列“x119”。 我尝试了各种各样的方法,似乎都是这样: df = df.assign(x119=F)) 或: 这些方法似乎将列添加到dfdataframe中,但当我使用: df.describe() 我仍然有118列。有人遇到过这种情况吗?调用df['x119']时,该列似乎存在,但在df.descripe()的说明中未显示 编辑:F的值是分类的,数值为1,2,3。当我使用df2=df然后使用df2.decribe()时,df中不存在列'x1

我有一个包含118列的熊猫数据框,我想添加一个新列“x119”。 我尝试了各种各样的方法,似乎都是这样:

df = df.assign(x119=F))
或:

这些方法似乎将列添加到
df
dataframe中,但当我使用:

df.describe()
我仍然有118列。有人遇到过这种情况吗?调用
df['x119']
时,该列似乎存在,但在
df.descripe()
的说明中未显示


编辑:F的值是分类的,数值为1,2,3。当我使用
df2=df
然后使用
df2.decribe()
时,df中不存在列
'x119'
,它工作正常,我可以看到所有列。

我认为问题应该是
x119
列以前在df中,所以只覆盖值

您可以通过以下方式进行检查:

print (df['x119'])
添加新列最简单的方法是:

print (len(df.columns))
df['x119'] = F
print (len(df.columns))
案例1:所有数据类型都是数字:
df.descripe()
df.assign(..)
之后工作正常。对于数字数据类型,下面是一个可复制的示例:

>>> df = pd.DataFrame([[1,2],[3,4]], columns=list('AB'))
>>> df
   A  B
0  1  2
1  3  4
>>> import numpy as np 
>>> df["C"] = np.nan 
>>> df
   A  B   C
0  1  2 NaN
1  3  4 NaN
>>> df.describe()
              A         B    C
count  2.000000  2.000000  0.0
mean   2.000000  3.000000  NaN
std    1.414214  1.414214  NaN
min    1.000000  2.000000  NaN
25%    1.500000  2.500000  NaN
50%    2.000000  3.000000  NaN
75%    2.500000  3.500000  NaN
max    3.000000  4.000000  NaN
>>> df.assign(D=5)
   A  B   C  D
0  1  2 NaN  5
1  3  4 NaN  5
>>> df.describe()
              A         B    C
count  2.000000  2.000000  0.0
mean   2.000000  3.000000  NaN
std    1.414214  1.414214  NaN
min    1.000000  2.000000  NaN
25%    1.500000  2.500000  NaN
50%    2.000000  3.000000  NaN
75%    2.500000  3.500000  NaN
max    3.000000  4.000000  NaN
>>> df  = df.assign(D=5)
>>> df.describe()
              A         B    C    D
count  2.000000  2.000000  0.0  2.0
mean   2.000000  3.000000  NaN  5.0
std    1.414214  1.414214  NaN  0.0
min    1.000000  2.000000  NaN  5.0
25%    1.500000  2.500000  NaN  5.0
50%    2.000000  3.000000  NaN  5.0
75%    2.500000  3.500000  NaN  5.0
max    3.000000  4.000000  NaN  5.0
>>> 
  • 确保将df.assign的结果分配回df,就像df=df.assign(…)

案例2:混合数字和对象数据类型: 对于混合对象和数字数据类型,需要执行文档中的Notes部分中提到的
df.description(include='all')

对于通过数据帧提供的混合数据类型,默认值为 仅返回数字列的分析。如果include='all'是 作为选项提供,结果将包括属性的并集 每种类型的

因此,您需要进行如下描述:

>>> df.describe(include='all')
               A         B    C    D    E
count   2.000000  2.000000  0.0  2.0    2
unique       NaN       NaN  NaN  NaN    2
top          NaN       NaN  NaN  NaN    2
freq         NaN       NaN  NaN  NaN    1
mean    2.000000  3.000000  NaN  5.0  NaN
std     1.414214  1.414214  NaN  0.0  NaN
min     1.000000  2.000000  NaN  5.0  NaN
25%     1.500000  2.500000  NaN  5.0  NaN
50%     2.000000  3.000000  NaN  5.0  NaN
75%     2.500000  3.500000  NaN  5.0  NaN
max     3.000000  4.000000  NaN  5.0  NaN
>>> 

它是带有数字标签的分类数据:1、2、3实际上它不是空的。如果我使用:df2=df,然后执行df2.decribe(),效果很好,谢谢!解决方案是include='all',其中也包括分类数字数据@是的,就是这样:)谢谢你的回答,刚刚编辑了我的帖子来澄清。好的,如果检查专栏的长度,它们总是一样的吗?完全按照你的建议尝试。分别得117分和118分。这太奇怪了:/And
print(len(df.columns))
前后是一样的吗?我没有对分类数据使用include='all'。谢谢你抽出时间!
>>> df["E"] = ['1','2']
>>> df
   A  B   C  D  E
0  1  2 NaN  5  1
1  3  4 NaN  5  2
>>> df.describe()
              A         B    C    D
count  2.000000  2.000000  0.0  2.0
mean   2.000000  3.000000  NaN  5.0
std    1.414214  1.414214  NaN  0.0
min    1.000000  2.000000  NaN  5.0
25%    1.500000  2.500000  NaN  5.0
50%    2.000000  3.000000  NaN  5.0
75%    2.500000  3.500000  NaN  5.0
max    3.000000  4.000000  NaN  5.0
>>> df
   A  B   C  D  E
0  1  2 NaN  5  1
1  3  4 NaN  5  2
>>> 
>>> df.describe(include='all')
               A         B    C    D    E
count   2.000000  2.000000  0.0  2.0    2
unique       NaN       NaN  NaN  NaN    2
top          NaN       NaN  NaN  NaN    2
freq         NaN       NaN  NaN  NaN    1
mean    2.000000  3.000000  NaN  5.0  NaN
std     1.414214  1.414214  NaN  0.0  NaN
min     1.000000  2.000000  NaN  5.0  NaN
25%     1.500000  2.500000  NaN  5.0  NaN
50%     2.000000  3.000000  NaN  5.0  NaN
75%     2.500000  3.500000  NaN  5.0  NaN
max     3.000000  4.000000  NaN  5.0  NaN
>>>