我无法合并数据框,无法理解原因:
简单数据框
...
while( $query->have_posts() ) :
$emailBody = '';
$query->the_post();
...
分组为3组合
-webkit-box-pack: end;
-webkit-box-align: center;
输出:
df1 = pd.DataFrame({'id': np.random.randint(1,5,100),
'c': np.random.random(100),
's': np.random.random(100)})
第二个简单数据框:
grouped = pd.qcut(df1.c, 3)
df_grouped = df1.groupby([grouped, 'id'])
df_cross = df_grouped['s'].sum()
df_unstacked = df_cross.unstack(level=0)
df_unstacked
尝试合并两者:
c [0.018, 0.372] (0.372, 0.771] (0.771, 0.995]
id
1 3.081537 6.329819 3.386422
2 4.270542 2.553301 3.778536
3 3.125476 2.525016 3.013912
4 5.762223 3.763183 7.953551
我希望:
df2 = pd.DataFrame({'one': range(5),
'two': np.random.randint(1,5,5),
'three': ['a', 'a', 'a', 'b', 'b']})
one three two
0 0 a 4
1 1 a 2
2 2 a 1
3 3 b 2
4 4 b 2
但我得到TypeError:
TypeError:无法将非类别项附加到CategoricalIndex
另外,在df_unstacked上尝试reset_index()会产生TypeError:
TypeError:无法将项目插入尚未成为现有类别的CategoricalIndex
制作.copy()没有帮助:)该怎么办?
P.S。大熊猫0.17.1
答案 0 :(得分:2)
使这项工作的一种方法是切换左表和右表的顺序。 Pandas允许您将Categorical列加入非Categorical列,但不是相反。
pd.merge(df2,df_unstacked, right_index=True, left_on='one')