从df.to_markdown()中删除空格

时间:2020-10-26 12:19:33

标签: python pandas dataframe

通过将txt文件读入数据框,我想基于现有列中的值添加一个新列,即添加“库存”和“交货”中的数值。

问题是,原始数据(来自数据供应商)是从“ df.to_markdowns()”生成的。

似乎我无法删除空格。

ds = pd.read_csv("C:\\TEMP\\ff.txt", sep="|", header = 0, skipinitialspace=True)
ds.columns = ds.columns.str.strip()

df['new'] = ds['Stock'] + ds['Delivery']

print (df)

enter image description here

如何处理这种情况?谢谢。

顺便说一下,这模拟了从“ df.to_markdown()”创建txt文件的过程。

import pandas as pd

data = {'Price': [59,98,79],
'Stock': [53,60,60],
'Delivery': [11,7,6]}
df = pd.DataFrame(data)

with open("C:\\TEMP\\ff.txt", 'a') as outfile:
    outfile.write(df.to_markdown() + "\n")

outfile.close

2 个答案:

答案 0 :(得分:1)

这适用于您提供的示例:

pd.read_csv("~/Downloads/ff.txt", sep=r"\s*\|\s*", engine="python", skiprows=[1])[["Price", "Stock", "Delivery"]]

如果您还想要其他东西,建议您提供一个示例。

答案 1 :(得分:1)

这应该可以满足您的需求。

ds = pd.read_csv(
    "C:\\TEMP\\ff.txt",
    sep="|",
    skiprows=[1],
    skipinitialspace=True
)
ds.columns = ds.columns.str.strip()
ds = ds.loc[:, ["Price", "Stock", "Delivery"]]
ds['new'] = ds['Stock'] + ds['Delivery']

print(ds)

输出

   Price  Stock  Delivery  new
0     59     53        11   64
1     98     60         7   67
2     79     60         6   66

skiprows=[1]跳过索引1处的行,该行是具有--------:的行

从数据框中删除此行后,pandas自动将PriceStockDelivery列解释为整数,这使语句ds['new'] = ds['Stock'] + ds['Delivery']可以按预期工作

相关问题