小编plo*_*fat的帖子

如何在 Spyder 4.0 中移动面板?

Spyder 4.0 刚刚发布,我无法根据我想要的布局移动面板。

我怎样才能做到这一点?

python ide spyder

6
推荐指数
1
解决办法
2197
查看次数

Pandas PerformanceWarning:DataFrame 高度碎片化。有效的解决方案是什么?

这是代表我的脚本中发生的情况的通用代码:

import pandas as pd
import numpy as np

dic = {}

for i in np.arange(0,10):
    dic[str(i)] = df = pd.DataFrame(np.random.randint(0,1000,size=(5000, 20)), 
                                    columns=list('ABCDEFGHIJKLMNOPQRST'))
    
df_out = pd.DataFrame(index = df.index)

for i in np.arange(0,10):
    df_out['A_'+str(i)] = dic[str(i)]['A'].astype('int')
    df_out['D_'+str(i)] = dic[str(i)]['D'].astype('int')
    df_out['H_'+str(i)] = dic[str(i)]['H'].astype('int')
    df_out['I_'+str(i)] = dic[str(i)]['I'].astype('int')
    df_out['M_'+str(i)] = dic[str(i)]['M'].astype('int')
    df_out['O_'+str(i)] = dic[str(i)]['O'].astype('int')
    df_out['Q_'+str(i)] = dic[str(i)]['Q'].astype('int')
    df_out['R_'+str(i)] = dic[str(i)]['R'].astype('int')
    df_out['S_'+str(i)] = dic[str(i)]['S'].astype('int')
    df_out['T_'+str(i)] = dic[str(i)]['T'].astype('int')
    df_out['C_'+str(i)] = dic[str(i)]['C'].astype('int')
Run Code Online (Sandbox Code Playgroud)

您会注意到,一旦插入列的 df_out(输出)数量超过 100,我就会收到以下警告:

性能警告:DataFrame 高度碎片化。这通常是多次调用的结果frame.insert,性能较差。考虑使用 pd.concat 代替

问题是我该如何使用:

pd.concat()
Run Code Online (Sandbox Code Playgroud)

并且仍然有取决于字典键的自定义列名称?

重要提示:我仍然想保留特定的列选择,而不是全部。就像示例中的那样:A、D、H、I 等...

特别编辑(基于 …

insert concatenation pandas

6
推荐指数
1
解决办法
1万
查看次数

如何有效地从列表字典中提取元素?

这是我最初的字典:

dic = {'key1': [2,3],
       'key2': [5,1],
       'key3': [6,8]}
Run Code Online (Sandbox Code Playgroud)

注意:为了示例的目的,我使用简单的数字 2,3 等(我这边的 dfs 列表)。

对于每个键,我想提取第一个元素并获得以下结果:

dic2 = {'key1': 2,
        'key2': 5,
        'key3': 6}
Run Code Online (Sandbox Code Playgroud)

是否可以在不进行缓慢的 for 循环的情况下做到这一点?字典还蛮大的...

非常感谢您的帮助。

python dictionary

4
推荐指数
1
解决办法
191
查看次数

标签 统计

python ×2

concatenation ×1

dictionary ×1

ide ×1

insert ×1

pandas ×1

spyder ×1