如何追加包含分类数据类型的预定义列的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数据类型将更有效或更快。这是真的?如果没有,我甚至可能不愿意将我的列转换为分类类型。
答案 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)
希望这有帮助。