如何分割列表数据和填充到一个DataFrame?



我有一个项目列表,想要用某些条件清理数据,输出是一个数据框。以下是列表:

[
"Onion per Pack|500 g|Rp18,100|Rp3,700 / 100 g|Add to cart",
"Shallot per Pack|250 g|-|49%|Rp22,300|Rp11,300|Rp4,600 / 100 g|Add to cart",
"Spring Onion per Pack|250 g|Rp7,000|Rp2,800 / 100 g|Add to cart",
"Green Beans per Pack|250 g|Rp5,900|Rp2,400 / 100 g|Add to cart",
]

<表类>名称单位折扣价格单价tbody><<tr>每包洋葱500 g td>Rp18,100Rp3,700/100 g葱每包250克49%Rp22,300Rp11,300葱每包250 g td>Rp7,000Rp2,800/100 g绿豆每包250 g td>Rp5,900Rp2,400/100 g

一旦源数据被清理(最好是由提供者)并且每个字段都被定义-通过数据集确保相同数量的字段-可以使用以下非常简单的方法来填充DataFrame:

数据:

cols = ['name', 'unit', 'discount', 'price', 'unit_price', 'other']
# Fields are defined by placing a 'double delimiter' indicating empty fields.
items = ["Onion per Pack|500 g||Rp18,100|Rp3,700 / 100 g|Add to cart",
"Shallot per Pack|250 g|49%|Rp22,300|Rp4,600 / 100 g|Add to cart",
"Spring Onion per Pack|250 g||Rp7,000|Rp2,800 / 100 g|Add to cart",
"Green Beans per Pack|250 g||Rp5,900|Rp2,400 / 100 g|Add to cart"]

人口:

清理后的源数据可以通过data参数直接填充到DataFrame中。在下面的例子中,使用"生成器表达式"来有效地迭代数据集并按字段分隔符进行分割。

下一条语句删除了额外的列,该列不包含在输出中。

df = pd.DataFrame(data=(i.split('|') for i in items), columns=cols)
df.drop('other', axis=1, inplace=True)

输出:

name   unit discount     price       unit_price
0         Onion per Pack  500 g           Rp18,100  Rp3,700 / 100 g
1       Shallot per Pack  250 g      49%  Rp22,300  Rp4,600 / 100 g
2  Spring Onion per Pack  250 g            Rp7,000  Rp2,800 / 100 g
3   Green Beans per Pack  250 g            Rp5,900  Rp2,400 / 100 g

我会使用地图;试一试:

ids = {
5: [0, 2, -1, 3, 4],
8: [0, 2, 4, 6, 7]
}
datas = pd.DataFrame()
for i in item:
i = i.split("|")
long = len(i)
data = {
"name": i[ids[long][0]],
"unit": i[ids[long][1]],
"discount": i[ids[long][2]] if ids[long][2] != -1 else "",
"price": i[ids[long][3]],
"unit price": i[ids[long][4]],
}
datas.append(pd.DataFrame(data))

相关内容

  • 没有找到相关文章

最新更新