从项目列表中创建特定形状的熊猫数据框

Posted

技术标签:

【中文标题】从项目列表中创建特定形状的熊猫数据框【英文标题】:Creating a pandas data frame of specific Shape from a list of items 【发布时间】:2019-10-08 09:31:06 【问题描述】:

我有一个特定大小的熊猫数据框:

   ID  FACTOR    LEVEL
  160  SPM       P                       
  159  SPM2      S                         
  851  ABS       K                        
  415  ABS       P                       
  202  ABS       P 
  205  ABS2      Q
  207  AQE       T 

我想要做的是列出两个项目: X = ['GAB', 'YER']

所以我想要做的是我想将列表中的这些项目作为一个新列分配,例如 NewCol,其特定频率与数据帧中行的大小相同。所以在这种情况下,假设我有 7 行和 2 个项目,并且 7/2 整数商为 3,所以我想将第一项放在 3 行中,将下一项放在剩余的 4 行中。所以输出应该是:

         ID  FACTOR    LEVEL  NewCol
        160  SPM       P        GAB               
        159  SPM2      S        GAB                 
        851  ABS       K        GAB               
        415  ABS       P        YER               
        202  ABS       P        YER
        205  ABS2      Q        YER
        207  AQE       T        YER

所以到目前为止我能够做的是使用

创建一系列两个元素
 df_s = pd.DataFrame(X)

这是给我的

     0
    GAB
    YER

但是,我无法使用 X 中的值创建数据框形状的系列,也无法找到分发它的方法。我仍在努力,但专家的一些帮助/提示将不胜感激。

【问题讨论】:

【参考方案1】:

使用np.repeat 并将结果分配给新列:

arr = np.repeat(X, len(df) // len(X))
df['NewCol'] = pd.Series(arr, index=df.index[:len(arr)])
df

    ID FACTOR LEVEL NewCol
0  160    SPM     P    GAB
1  159   SPM2     S    GAB
2  851    ABS     K    GAB
3  415    ABS     P    YER
4  202    ABS     P    YER
5  205   ABS2     Q    YER
6  207    AQE     T    NaN

如果要填充最后一个 NaN,请使用,

df['NewCol'] = df['NewCol'].ffill()

【讨论】:

【参考方案2】:

一些不同的想法使用clip

import numpy as np 
n=len(X)
m=len(df)//n 
s=pd.Series(np.arange(len(df))//m).clip_upper(n-1)
df['New']=s.map(dict(zip(s.unique(),X)))
df
Out[278]: 
    ID FACTOR LEVEL  New
0  160    SPM     P  GAB
1  159   SPM2     S  GAB
2  851    ABS     K  GAB
3  415    ABS     P  YER
4  202    ABS     P  YER
5  205   ABS2     Q  YER
6  207    AQE     T  YER

【讨论】:

是的,这是一种新方法,我没用过,早点剪辑。学到了新东西!谢谢

以上是关于从项目列表中创建特定形状的熊猫数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在两行之间划分特定列中的值并保持其他列不变来在熊猫数据框中创建新行?

如何从熊猫数据框中创建一个字典?

如何从数据框熊猫中制作列表列表?

从嵌套字典列表中获取熊猫数据框

创建具有不相等值列表的熊猫数据框

从存储为熊猫数据框中的字符串的列表中提取项目