【问题标题】:Convert multiple string to dataframe in python在python中将多个字符串转换为数据框
【发布时间】:2020-02-24 11:07:16
【问题描述】:

我要转换三个字符串。

 row='A;B;C'

 col='aaa,bbb,ccc;aaa,bbb,abc;aaa,bbb,ccc'

 val='99,80,90;100,100,100;90,90,90'

我想在 Python 中将 String 转换为 DataframeMatrix

   aaa  bbb   ccc   abc

A  99   80    90    NaN

B  100  100   NaN   100

C  90   90    90    NaN

如何将上述字符串或任何其他字符串转换为Dataframe

【问题讨论】:

    标签: python pandas dataframe matrix split


    【解决方案1】:

    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html 应该可以解决问题

    你有一些不一致的分隔符,我用,替换了

    row='A,B,C' 
    col='aaa,bbb,ccc,aaa,bbb,abc,aaa,bbb,ccc' 
    val='99,80,90,100,100,100,90,90,90'
    buffer = ""
    buffer += row + "\n" + col+ "\n"+val
    pandas.read_csv(buffer)
    

    【讨论】:

    • 我试过data=pd.read_csv(StringIO(buffer)) 因此我得到` A B C aaa bbb ccc aaa bbb aa bbb ccc 99 80 90 100 100 100 90 90 90 `我怎样才能得到我要求的数据帧格式?
    • 它应该返回一个数据框
    【解决方案2】:

    怎么样:

    def create_frame(row_str, col_str, val_str,
                     record_delim=';', field_delim=','):
        out = zip(row_str.split(record_delim),
                  col_str.split(record_delim),
                  val_str.split(record_delim))
    
        df = pd.DataFrame({i: dict(zip(c.split(field_delim),
                                       v.split(field_delim)))
                           for i, c, v in out})
        return df.T
    
    # Example
    row='A;B;C'
    col='aaa,bbb,ccc;aaa,bbb,abc;aaa,bbb,ccc'
    val='99,80,90;100,100,100;90,90,90'
    
    df = create_frame(row, col, val)
    print(df)
    

    [出]

       aaa  bbb  ccc  abc
    A   99   80   90  NaN
    B  100  100  NaN  100
    C   90   90   90  NaN
    

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2018-11-23
      • 1970-01-01
      • 2018-12-14
      相关资源
      最近更新 更多