我想忽略数据框中的空列。
例如:
样本.csv
Id Name Address Contact Item Rate Qty Price
1 Mark California 98429102 Shirt 57 2 8
2 Andre Michigan 92010211
我试过了:
import pandas as pd
df = pd.read_csv('sample.csv')
df = df.fillna('')
df.to_csv('sample.txt',sep='*',index=False, header=False)
sample.txt 看起来像
1*Mark*California*98429102*Shirt*57*2*8
2*Andre*Michigan*92010211****
我想删除这里的空列。 sample.txt 应如下所示:
1*Mark*California*98429102*Shirt*57*2*8
2*Andre*Michigan*92010211
答案 0 :(得分:2)
只需使用内存缓冲区和 strip()
import io
df = pd.read_csv(io.StringIO("""1*Mark*California*98429102*Shirt*57*2*8
2*Andre*Michigan*92010211****"""), sep="*", header=None)
with open("sample.csv", "w") as f:
f.write("\n".join([l.strip("*") for l in df.to_csv(sep="*",header=None, index=None).split("\n")]))
with open("sample.csv") as f: print(f.read())
1*Mark*California*98429102*Shirt*57.0*2.0*8.0
2*Andre*Michigan*92010211
答案 1 :(得分:1)
怎么样
sep = '*'
df.applymap(str).apply(
# axis=1, func=lambda s: sep.join(el for el in s if el) # Removes all empty fields
axis=1, func=lambda s: sep.join(s).strip('*') # Removes trailing fields
).to_csv(
'sample.txt', index=False, header=False
)