【问题标题】:Dataframe does not have separated columns for every data after reading CSV file读取 CSV 文件后,Dataframe 没有为每个数据设置单独的列
【发布时间】:2022-10-25 23:16:40
【问题描述】:

我正在加载一个 csv 文件以便在数据框中读取它。但是,当我加载它时,我得到了未分离的数据框。

CSV文件中的数据如下,

Name;OffsetBarrierX;MeanF;MaxF;Thickness
sim1;88.416;-120140.0402;453487.6875;2.4
sim2;-108.321;-119949.118;447437.9688;2.4
sim3;-89.221;-119324.1906;576758.625;2.4
sim4;-89.221;-119324.1906;576758.625;2.4
sim5;-87.488;-117527.1688;574904.5625;2.4
sim6;-11.1424;-183188.6846;763354;2.4

我写了以下代码行,

path = '../00_Data/Res_Overl_A.csv'
pd.read_csv(path, sep = ';')

我得到以下输出,

Name;OffsetBarrierX;MeanF;MaxF;Thickness
0   sim1;88.416;-120140.0402;453487.6875;2.4
1   sim2;-108.321;-119949.118;447437.9688;2.4
2   sim3;-89.221;-119324.1906;576758.625;2.4
3   sim4;-87.488;-117527.1688;574904.5625;2.4
4   sim5;-11.1424;-183188.6846;763354;2.4
5   sim6;-82.713;-121320.2933;608878.1875;2.4
6   sim7;-27.194;-172708.102;747944.625;2.4

如您所见,没有任何变化。我需要一个在数据框的不同列中具有不同数据的输出。如何为每个数据制作不同的列?

【问题讨论】:

    标签: python python-3.x pandas dataframe csv


    【解决方案1】:

    无法重现 OP 的问题,因为当我使用上述数据创建 csv 时,pandas.read_csv 读取没有任何问题

    path = r'C:UsersjohndoeDocumentsPythonChallengesStackOverflow8.csv'
    
    df = pd.read_csv(path, sep=';')
    
    [Out]:
    
       Name  OffsetBarrierX        MeanF         MaxF  Thickness
    0  sim1         88.4160 -120140.0402  453487.6875        2.4
    1  sim2       -108.3210 -119949.1180  447437.9688        2.4
    2  sim3        -89.2210 -119324.1906  576758.6250        2.4
    3  sim4        -89.2210 -119324.1906  576758.6250        2.4
    4  sim5        -87.4880 -117527.1688  574904.5625        2.4
    5  sim6        -11.1424 -183188.6846  763354.0000        2.4
    

    但是,鉴于 OP 的问题,一种方法是将 CSV 的内容存储在变量中。让我们调用变量csv

    csv = """Name;OffsetBarrierX;MeanF;MaxF;Thickness
    sim1;88.416;-120140.0402;453487.6875;2.4
    sim2;-108.321;-119949.118;447437.9688;2.4
    sim3;-89.221;-119324.1906;576758.625;2.4
    sim4;-89.221;-119324.1906;576758.625;2.4
    sim5;-87.488;-117527.1688;574904.5625;2.4
    sim6;-11.1424;-183188.6846;763354;2.4"""
    

    现在,StringIO 应该可以解决问题了

    from io import StringIO
    
    df = pd.read_csv(StringIO(csv), sep=';')
    
    [Out]:
    
       Name  OffsetBarrierX        MeanF         MaxF  Thickness
    0  sim1         88.4160 -120140.0402  453487.6875        2.4
    1  sim2       -108.3210 -119949.1180  447437.9688        2.4
    2  sim3        -89.2210 -119324.1906  576758.6250        2.4
    3  sim4        -89.2210 -119324.1906  576758.6250        2.4
    4  sim5        -87.4880 -117527.1688  574904.5625        2.4
    5  sim6        -11.1424 -183188.6846  763354.0000        2.4
    

    【讨论】:

    • 这也适用于大型 CSV 文件吗?
    • 如果文件很大,我们如何将 csv 文件的所有内容命名为“csv”?
    • @bleed_bits 因为我无法访问您的 csv,所以我可以重现您的问题的一种方法是在变量中使用您的 csv 内容。即使它完成了工作,但每次都这样做并不实际。因此,我的建议是共享文件,以便可以共享更好的方法。
    • @bleed_bits 如果有帮助,请考虑将答案标记为正确。
    猜你喜欢
    • 2015-05-04
    • 2020-12-21
    • 2022-01-11
    • 1970-01-01
    • 2011-07-16
    • 2019-11-18
    • 1970-01-01
    • 2011-01-14
    • 2017-02-08
    相关资源
    最近更新 更多