Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 如何访问数据框中作为对象保存的分类数据?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何访问数据框中作为对象保存的分类数据?

Python 如何访问数据框中作为对象保存的分类数据?,python,pandas,dataframe,Python,Pandas,Dataframe,我有.dta数据,加载时使用df=pd.read\u stata('mydata.dta',convert\u categoricals=True)。当我从Stata转换类别时,我可以更容易地“看到”我的类别是关于什么的。但我找不到处理这种格式数据的选项。它实际上转换为字符串/对象 我在SA上发现了一个类似的问题,但没有任何答案: 我的解决方法是不将猫从dta转换df=pd.read\u stata('mydata.dta',convert\u categoricals=False)然后计算等是

我有
.dta
数据,加载时使用
df=pd.read\u stata('mydata.dta',convert\u categoricals=True)
。当我从Stata转换类别时,我可以更容易地“看到”我的类别是关于什么的。但我找不到处理这种格式数据的选项。它实际上转换为字符串/对象

我在SA上发现了一个类似的问题,但没有任何答案:

我的解决方法是不将猫从dta转换
df=pd.read\u stata('mydata.dta',convert\u categoricals=False)
然后计算等是可能的,但我必须手动查找所有类别。那不是很像蟒蛇

这情况真的很难预测。不知怎么的,是这样的:

将熊猫作为pd导入
df=pd.DataFrame({'year':['1988','1988','1988','1988','1989','1989','1989'],
“货币”:[5',7',8',8',3',3',7',8']}
健康状况=['2[良好]、'-2[不适用]、'3[正常]、'1[良好]、'3[正常]、'5[不良]、'2[良好]、'1[良好]]
df['health']=健康
df.info()#健康是一个对象
#df.loc[(df.health>=2)和(df.year=1988),“钱”]#不起作用
在我的分析中,我想检查一年内健康状况良好的人的钱。但类别是字符串。我有很多变量和类别

如何告诉数据帧使用“括号前的数字”

处理dataframe中类别的“值”和“标签”的正确方法是什么?正确的数据类型是什么?

以下是从
运行状况
值获取新列值的必要用法:

df[['a','b']] = df['health'].str.extract('([-]?\d+)\s+\[(.+)\]')
df['a'] = df['a'].astype(int)
print (df)
   year  money               health  a               b
0  1988      5             2 [good]  2            good
1  1988      7  -2 [not applicable] -2  not applicable
2  1988      8               3 [ok]  3              ok
3  1988      8        1 [excellent]  1       excellent
4  1989      3               3 [ok]  3              ok
5  1989      3              5 [bad]  5             bad
6  1989      7             2 [good]  2            good
7  1989      8        1 [excellent]  1       excellent

所以我总是要从字符串中提取数值?跟踪“含义/标签”的唯一方法是将其保存到另一列?我的意思是,我有10个这样的变量,它仍然是可能的。但在我看来,它不太优雅。是否无法在df的一个单元格中存储值和标签?最好的regards@MarcoDoe-这取决于你需要什么。如果标量在列中,那么最好的方法是分别使用数值列和字符串列。