通过将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)
如何处理这种情况?谢谢。
顺便说一下,这模拟了从“ 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
答案 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自动将Price
,Stock
和Delivery
列解释为整数,这使语句ds['new'] = ds['Stock'] + ds['Delivery']
可以按预期工作