我有一个包含118列的Pandas数据框,我想添加一个新列' x119'。 我尝试使用各种方法,似乎都像:
df = df.assign(x119=F))
或:
df.loc[:,'x119'] = F
这些方法似乎将列添加到df
数据帧,但是当我使用时:
df.describe()
我仍然得到118列。有谁遇到过这种情况?调用df['x119']
时,该列似乎存在但未在df.describe()
的说明中显示。
编辑:F的值是分类的,数值为1,2,3。在{d}之前和当我使用'x119'
然后df2=df
时,df2.decribe()
列不存在,它可以正常工作,我可以查看所有列。
答案 0 :(得分:1)
我认为问题应该是x119
列之前的df,所以只能覆盖值。
您可以通过以下方式查看:
print (df['x119'])
最简单的添加新列是:
print (len(df.columns))
df['x119'] = F
print (len(df.columns))
答案 1 :(得分:1)
df.describe()
在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
>>>
对于混合对象和数值数据类型,您需要执行文档here中 Notes 部分中提到的df.describe(include='all')
:
对于通过DataFrame提供的混合数据类型,默认值为 仅返回数值列的分析。如果包含='全部'是 作为选项提供,结果将包括属性的并集 每种类型。
>>> 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
>>>
所以你需要按如下方式调用describe:
>>> 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
>>>