在MultiIndex下转换熊猫列的类型

时间:2018-09-03 14:02:56

标签: pandas

我有类似的东西

var jsObject = JSON.parse('<?= addslashes(json_encode($phpArray)) ?>');

请注意,>>> df user1 user2 param 0 1 2 a x d a 0 2 6 0 1 0 0 1 4 13 0 0 0 3 2 21 76 2 0 1 0 user1user2处于同一级别(合并的副作用):

param

我想将>>> df.columns.get_level_values(0) Index(['user1','user2','param','param','param','param'], dtype='object') >>> df.columns.get_level_values(1) Index(['','',0,0,1,2], dtype='object') 下的所有内容转换为浮点数,但将paramuser1保留为整数。我已经检查过this thread,但不确定如何将其转换为 setting column dtypes。

编辑:

生成器代码

user2

1 个答案:

答案 0 :(得分:1)

由于不确定确切的数据结构,因此我无法为您提供经过测试的解决方案。

但是在MultiIndex DataFrame(和其他任何数据)上,您可以使用构成它们的Series的基础属性对DataFrame的各个列进行更改。在这种情况下,您可以通过series.name进行过滤,如下更改param下所有列的dtypes。

df.apply(lambda x: x.astype(float) if 'param' in x.name else x)

pandas构造MultiIndex名称的方法是通过创建具有不同级别的元组,因此对其执行contains操作会为您提供所需的列。

编辑:

我已经测试了示例DataFrame中的代码,并且可以正常工作。

看到您的评论。如果要手动访问和修改每个列,则可以单独使用astype方法来完成。

final_df['count'] = final_df['count'].astype(float)