如何使用Pandas行格式读取csv

2024-05-29 03:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我的日志文件如下所示:

Datetime;Identifier;Description;Value;Unit 
2020-06-18 00:02:55;var1;Gasflow meting 1;7.494;L/min 
2020-06-18 00:02:55;var2;Dauwpunt meting 1;-53.119;grC  
2020-06-18 00:08:55;var1;Gasflow meting 1;7.494;L/min  
2020-06-18 00:08:55;var2;Dauwpunt meting 1;-53.119;grC

这基本上是一种行(或行)格式,其中不是每个变量都有一列,而是每行包含一个不同的变量

我想把这个和熊猫一起读成一个面向列的格式。df最终应该看起来像:

Datetime;[identifier1_description1_unit1];[identifier2_description2_unit2];etc

其中,列的名称a是标识符、描述和单位的链接

使用上述示例,这将是:

Datetime;[var1_Gasflow meting 1_L/min];[var2_Dauwpunt meting 1_grC]
2020-06-18 00:02:55;7.494;-53.119
2020-06-18 00:08:55;7.494;-53.119

当然,日志文件和列表要长得多,而不确切知道标识符、描述、值或单元的名称


Tags: 文件名称datetimevalue格式标识符descriptionmin
3条回答
df = pd.read_csv('filename', sep=';')

这将使用文件中的数据创建一个dataframe;作为分隔符

我想到了我认为最简单的解决办法。我不熟悉pandas的枢轴功能,它完成了整个技巧:

df =  pd.read_csv('data.csv', sep=';')
df['label'] = df['Identifier'] + "_" + df['Description'] + "_" + df['Unit']
df.drop(['Identifier','Description','Unit'],inplace=True)
df2 = df.pivot(index='Datetime', columns='label', values='value')

这不是很像Python

df =  pd.read_csv('~/projects/data.txt', sep=';')

屈服

    Datetime            Identifier  Description     Value   Unit
0   2020-06-18 00:02:55 var1    Gasflow meting 1    7.494   L/min
1   2020-06-18 00:02:55 var2    Dauwpunt meting 1   -53.119 grC

然后做标签

df['label'] = df['Identifier'] + "_" + df['Description'] + "_" + df['Unit']

明白了吗

    Datetime            Identifier  Description     Value   Unit    label
0   2020-06-18 00:02:55 var1    Gasflow meting 1    7.494   L/min   var1_Gasflow meting 1_L/min
1   2020-06-18 00:02:55 var2    Dauwpunt meting 1   -53.119 grC var2_Dauwpunt meting 1_grC

现在的比特不是很pythonic,你必须按照你喜欢的方式来设置格式

for name, df1 in df.groupby('Datetime'):
    df2 = df1[['label','Value']]
    print (name)
    print (df2['label'].to_list())
    print (df2['Value'].to_list())


2020-06-18 00:02:55
['var1_Gasflow meting 1_L/min', 'var2_Dauwpunt meting 1_grC']
[7.494, -53.119]

相关问题 更多 >

    热门问题