当前位置: 首页 > 知识库问答 >
问题:

在得到假人后重新排列列

从光启
2023-03-14
       A            B            C               D              E
0   165349.20   136897.80    471784.10        New York      192261.83
1   162597.70   151377.59    443898.53        California    191792.06
2   153441.51   101145.55    407934.54        Florida       191050.39
3   144372.41   118671.85    383199.62        New York      182901.99
4   142107.34   91391.77     366168.42        Florida       166187.94

使用df=pd.get后_dummies(df,列=['D'])

        A            B              C           E      D_New York    D_California     D_Florida
0   165349.20    136897.80      471784.10   192261.83      0             0                1
1   162597.70    151377.59      443898.53   191792.06      1             0                0
2   153441.51    101145.55      407934.54   191050.39      0             1                0
3   144372.41    118671.85      383199.62   182901.99      0             0                1
4   142107.34    91391.77       366168.42   166187.94      0             1                0

有没有一种方法,在不使用df[[a'、'B'、'C'、'D_Califorina'、'D_New York'、'D_Florida'、'E']的情况下,输出是这样的?

        A            B          C      D_New York    D_California     D_Florida     E
0   165349.20   136897.80   471784.10       0               0          1    192261.83
1   162597.70   151377.59   443898.53       1               0          0    191792.06
2   153441.51   101145.55   407934.54       0               1          0    191050.39
3   144372.41   118671.85   383199.62       0               0          1    182901.99
4   142107.34   91391.77    366168.42       0               1          0    166187.94

共有3个答案

农诚
2023-03-14

不确定有没有更好的办法但这会管用

col = ['R&D Spend', 'Administration', 'Marketing Spend', 'State_California', 'State_New York', 'State_Florida', 'Profit(E)']

df=df.loc[:, col]
夹谷苗宣
2023-03-14

通过使用sort\u索引

df.sort_index(axis=1)
Out[813]: 
           A          B          C  D_California  D_Florida  D_NewYork  \
0  165349.20  136897.80  471784.10             0          0          1   
1  162597.70  151377.59  443898.53             1          0          0   
2  153441.51  101145.55  407934.54             0          1          0   
3  144372.41  118671.85  383199.62             0          0          1   
4  142107.34   91391.77  366168.42             0          1          0   
           E  
0  192261.83  
1  191792.06  
2  191050.39  
3  182901.99  
4  166187.94  

编辑:。。。。。使用dictlambda

A=dict(zip(df.columns,list(range(0,df.shape[1]))))
#build a dict A store the order of original df
df1=pd.get_dummies(df, columns=['State'])
#get your df
youroder=list(df1)
#new disorder column name
youroder.sort(key=lambda val: A[val.split(sep='_')[0]])
# sort it 
df1[youroder]

Out[842]: 
   R&D Spend  Administration  Marketing Spend  State_California  \
0  165349.20       136897.80        471784.10                 0   
1  162597.70       151377.59        443898.53                 1   
2  153441.51       101145.55        407934.54                 0   
3  144372.41       118671.85        383199.62                 0   
4  142107.34        91391.77        366168.42                 0   
   State_Florida  State_NewYork  Profit(E)  
0              0              1  192261.83  
1              0              0  191792.06  
2              1              0  191050.39  
3              0              1  182901.99  
4              1              0  166187.94  
董花蜂
2023-03-14

对于可能不按排序顺序排列的列的广义解决方案:
查找要虚拟的列的位置并相应地调整

j = df.columns.get_loc('D')

left = df.iloc[:, :j]
dumb = pd.get_dummies(df[['D']])
rite = df.iloc[:, j+1:]

pd.concat([left, dumb, rite], axis=1)

           A          B          C  D_California  D_Florida  D_New York          E
0  165349.20  136897.80  471784.10             0          0           1  192261.83
1  162597.70  151377.59  443898.53             1          0           0  191792.06
2  153441.51  101145.55  407934.54             0          1           0  191050.39
3  144372.41  118671.85  383199.62             0          0           1  182901.99
4  142107.34   91391.77  366168.42             0          1           0  166187.94
 类似资料:
  • 问题内容: 假设有两个没有同步的线程,一个设置另一个执行。 在下文中,“读取”始终指字段的读取。 以下输出可能吗? 答案是肯定的,因为即使读1发生在读2之前,但是由于读2不会改变线程内执行的语义,因此仍可能在读1之前对读2重新排序。 这个推理正确吗? 问题答案: 发生在前并不意味着两个任意操作的顺序。更精确地说,出现这种情况,之前所做的最重要的事情是占用 的写入 和 读取 在 之前发生的一致性 。

  • 问题内容: 我需要移动现有列的位置(以获得更好的可见性)。 如何做到这一点而又不影响数据? 问题答案: 修改也可以。看一看:

  • 问题内容: 我有一个数据库SQLite,然后使用SimpleCursorAdapter,将值显示到列表视图中。但是,我想重新排列列表视图项,并在顶部显示ID#1,然后显示ID号2,依此类推。问题是,我无法掌握根据以下内容重新分配列表视图项的概念在内容提供商提供的某些ID号上。如果您知道,请分享。谢谢。 问题答案: 如果正确使用SQLite,则在查询数据库时应该能够执行“按ID排序”。 如果不是这种

  • 我有一个简单的POJO(字段1,字段2,字段3),我使用HibernateORM,我有一个基本的需求:我永远不应该更新数据库中的字段3。一旦第一次插入一行,当我调用回购以通过id(findById)获取对象时,即使我调用字段3的setter(setField3()),调用保存方法也应该抛出错误或异常,指定我正在尝试更新字段3,我不应该。我不知道Hibernate是否可以处理这种需求,或者我是否必须

  • 如果我将一个字段定义为不可更新的,这是否意味着该字段根本不能更新?我想做的是在保存整个实体对象时防止字段被更新,但仍然能够编写显式更新该字段的查询。这可能吗? 我使用的是Hibernate和MySQL,但我更喜欢编写可移植代码。

  • 问题内容: 我有一个4d numpy数组,该数组代表具有3d实例的数据集。可以说数组的形状是。 如何将数组的形状更改为? -–问题更新似乎rollaxis和transpose都能解决问题。 感谢您的回复! 问题答案: 该函数完全可以实现您想要的功能,您可以传递轴参数来控制要交换的轴: b的轴是a的轴的置换版本:b的轴0是a的第3轴,b的轴1是a的第0轴,依此类推… 这样,您可以在第二或第三位指定要