【问题标题】:Create Pandas Dataframe from different numpy arrays; one column should contain a row from my array从不同的 numpy 数组创建 Pandas Dataframe;一列应该包含我数组中的一行
【发布时间】:2021-09-17 20:43:41
【问题描述】:

在我的代码中,我将数据存储在 numpy 数组中。我想使用 Pandas 将我的数据保存到 csv 文件中。此外,我希望我的数据在 csv 文件中具有特殊格式。

我的数据:

data1 = np.array([1,2,3],[4,5,6],[7,8,9])  
data2 = np.array([10,11,12])   
data3 = np.array([13,14,15])  

我想要什么:一个 csv 文件包含三个标记为 'data1''data2''data3' 的列。
'data1' 应该有 3 行,第 1 行包含值 1、2、3(或1 2 3),第 2 行应包含 4,5,6(或 4 5 6)等等。
标记为'data2' 的列应在第 1 行包含 10,在第 12 行包含 11,在第 3 行包含 13。
'data 3' 类似。

我怎样才能做到这一点?

【问题讨论】:

    标签: python arrays pandas dataframe numpy


    【解决方案1】:

    使用问题中描述的约束,这就是我的处理方式:

    import numpy as np
    import pandas as pd
    
    data1 = np.array([[1,2,3],[4,5,6],[7,8,9]])  # list of lists in declaration
    data2 = np.array([10,11,12])   
    data3 = np.array([13,14,15])
    
    df = pd.DataFrame(zip(data1, data2, data3), columns=['data1', 'data2', 'data3'], dtype='str')
    df['data1'] = df['data1'].str.replace('[', '').str.replace(']', '')
    df.to_csv('./out.csv', index=False)  # saving to file in cwd with name 'out.csv'
    

    导致out.csv 包含:

    data1,data2,data3
    1 2 3,10,13
    4 5 6,11,14
    7 8 9,12,15
    

    编辑

    回答以下关于从上述格式的 csv 转换回原始数组的评论:

    # let pandas infer the data types (data1: str, data2: int, data3: int. By default)
    df = pd.read_csv('./out.csv')
    
    # convert each entry in data1 to a numpy array using fromstring method
    df['data1'] = df['data1'].apply(lambda x : np.fromstring(x, sep=' '))
    
    # nuance to get series of arrays back to numpy.ndarray
    data1 = np.array(df['data1'].to_list())
    
    # simply use to_numpy method for integer columns
    data2 = df['data2'].to_numpy()
    data3 = df['data3'].to_numpy()
    

    【讨论】:

    • 是否还有一种简单的方法可以从 csv 文件中读取值并恢复原始数组?
    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2021-03-08
    • 2021-07-23
    • 2015-12-05
    • 2019-05-05
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多