如何将以下文本转换为Pandas数据帧?

2024-09-30 14:30:47 发布

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

以下数据存储在我使用readlines()读取的文件中。在

6月1日

早餐-20

午餐-40

零食-10

车票-130

自动-60

6月3日

汽车票-206

自动-71

租金-3385

电力-1085

晚餐-120

我试了很多方法,但都没有得到确切的结果。所需的输出为:

         Breakfast  Lunch  Snacks  Bus Ticket  Auto  Rent  Electricity  Dinner
1st June    20       40      10        130      60    0         0         0
3rd June     0        0       0        206      71   3385      1085      120

数据中的日期应该是Dataframe的索引,后面是项目作为列名,成本是列的值。在


Tags: 文件数据方法电力lunch午餐车票june
2条回答

使用:

import pandas as pd

temp=u"""1st June

Breakfast - 20

Lunch - 40

Snacks - 10

Bus Ticket - 130

Auto - 60

3rd June

Bus Ticket - 206

Auto - 71

Rent - 3385

Electricity - 1085

Dinner - 120"""

如果没有csv的头,首先由^{}创建names,参数为names

^{pr2}$

然后创建3个新列—首先通过前向填充^{}创建的NaN来重复日期,然后^{}值并通过^{}删除不必要的行:

mask = df['data'].str.contains('-')
df['a'] = df['data'].mask(mask).ffill()
df[['b', 'c']] =  df['data'].where(mask).str.split(' - ', expand=True)
df = df.dropna(subset=['b'])

{a5}和{a5}最后一次使用{a5}和{a5}顺序的{a5}和最后一次使用^ a5}的值:

^{4}$

所以,如果是我,我会把所有的东西放进一个dict中,然后从这个dict构建一个dataframe。你的数据行中是否有与某种类型的值相似的部分?您的索引值(ordinalnumber Month)与列值(columname - data)有什么不同吗?在

将这些索引值作为键放入dict,然后将列值作为元组或dict的列表放入dict,如下所示:
my_pandas_dict = { "ordNum Month" : { "columname" : data, "columname" : data, "columname" : data, ... }, ... }

然后看看pandas documentation来找出如何从dict生成数据帧

(注意:我可能用一种不合适的方式组织了那个dict中的数据。查看文档并找出如何正确组织文档)

相关问题 更多 >