我可以将 Pandas 数据帧压缩成一行吗?

时间:2021-06-22 12:09:22

标签: pandas

我有一个使用 pd.json_normalize 从 json 对象中提取的 Pandas 数据框。 它有 4 行和 60 多列,除了 'ts' 列之外,没有任何列有多个值。 screenshot of dataframe

是否可以将四行合并为一行,然后可以将其写入 .csv 文件?我已经搜索了文档,但没有找到这方面的信息。 为了提供上下文,数据是来自气象站的一次性记录,我将每隔 5 分钟记录一次,需要将所有记录放入数据库以供进一步使用。

1 个答案:

答案 0 :(得分:0)

我已经设法得到了想要的结果,这有点令人费解,我希望有一种更简洁的方法来做到这一点,但我基本上操纵了数据框,用零替换了所有 nan,替换了一些字符串使用整数并将列添加在一起,如下面的代码所示:

    with open(fname,'r') as d:
    ws=json.loads(next(d)) 
    df=pd.json_normalize(ws['sensors'], record_path='data')
    df3=pd.concat([df.iloc[0],df.iloc[1], df.iloc[2], 
    df.iloc[3]],axis=1)
    df3.rename(columns={0 :'a', 1:'b', 2 :'c' ,3 :'d'}, inplace=True)
    df3=df3.fillna(0)
    df3.loc['ts',['b','c','d']]=0
df3.loc[['ip_v4_gateway','ip_v4_netmask','ip_v4_address'],'c']=int(0)
    df3['comb']=df3['a']+df3['b']+df3['c']+df3['d']
    df3.drop(columns=['a','b','c','d'], inplace=True)
    df3=df3.T
    

正如很多人所说,关于这个的文档非常不完整,所以我希望这可以帮助其他正在为这个问题而苦苦挣扎的人! (是的,我知道一行没有正确缩进,克服它!)

相关问题