【问题标题】:Finding All DataFrame Matches for One Column to Get Combinations查找一列的所有 DataFrame 匹配项以获取组合
【发布时间】:2023-01-10 19:09:33
【问题描述】:

假设我有一个 DataFrame base_df,上面写着:

  0  1   2   3
0 2 'A' 'B' NaN
1 2 'A' 'C' NaN
2 2 'A' NaN 'D'
3 2 'A' NaN 'E'
4 2 'A' NaN 'F'

我如何扩展单元格和列,最好不需要迭代,以生成:

   0  1   2   3
0  2 'A' 'B' NaN
1  2 'A' 'C' NaN
2  2 'A' NaN 'D'
3  2 'A' NaN 'E'
4  2 'A' NaN 'F'
5  3 'A' 'B' 'D'
6  3 'A' 'C' 'D'
7  3 'A' 'B' 'E'
8  3 'A' 'C' 'E'
9  3 'A' 'B' 'F'
10 3 'A' 'C' 'F'

第 0 列我可以用 base_df.count(axis=1) 处理得很好,但我的解决方案通常迫使我用 .iterrows() 遍历行。大熊猫有更好的方法吗?

【问题讨论】:

    标签: python pandas combinatorics


    【解决方案1】:

    要添加一行:

    df = pd.DataFrame({'A': [2]*5,
                       'B' : ["A"]*5,
                       'C' : ['B','C',np.nan,np.nan,np.nan],
                       'D' : [np.nan,np.nan,'D','E','F']})
    
    
    row = {"A" : 1, "B" : 2, "C" : 3, "D" : 4}
    df.loc[len(df.index)] = row
    

    要添加多行:

    df = pd.DataFrame({'A': [2]*5,
                       'B' : ["A"]*5,
                       'C' : ['B','C',np.nan,np.nan,np.nan],
                       'D' : [np.nan,np.nan,'D','E','F']})
    
    
    rows =[{"A" : 1, "B" : 2, "C" : 3, "D" : 4},{"A" : 1, "B" : 2, "C" : 3, "D" : 4},{"A" : 1, "B" : 2, "C" : 3, "D" : 4}]
    df=pd.concat([df,pd.DataFrame(rows)])
    df
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 2021-10-17
      相关资源
      最近更新 更多