使用分类列

时间:2017-02-09 18:16:09

标签: python pandas

如何追加包含分类数据类型的预定义列的Pandas DataFrame:

df=pd.DataFrame([],columns=['a','b'])
df['a']=pd.Categorical([],categories=[0,1])

new_df=pd.DataFrame.from_dict({'a':[1],'b':[0]})
df.append(new_df)

上面给我一个错误:

ValueError: all the input arrays must have same number of dimensions

更新: 如果类别是字符串而不是整数,则附加似乎有效:

df['a']=pd.Categorical([],categories=['Left','Right'])

new_df=pd.DataFrame.from_dict({'a':['Left'],'b':[0]})
df.append(new_df)

那么,如何使用int值类别附加到DataFrame?其次,我假设使用二进制值(0/1),将列存储为Categorical而不是numeric数据类型将更有效或更快。这是真的?如果没有,我甚至可能不愿意将我的列转换为分类类型。

1 个答案:

答案 0 :(得分:1)

您必须保持两个数据帧一致。在将第a列从第一个数据帧转换为分类时,您需要对第二个数据帧执行相同操作。你可以按照以下方式进行 -

import pandas as pd

df=pd.DataFrame([],columns=['a', 'b'])
df['a']=pd.Categorical([],[0, 1])

new_df=pd.DataFrame.from_dict({'a':[0,1,1,1,0,0],'b':[1,1,8,4,0,0]})
new_df['a'] = pd.Categorical(new_df['a'],[0, 1])

df.append(new_df, ignore_index=True)

希望这有帮助。