Ste*_*eve 1 python dataframe pandas
所以我正在解析许多文件中包含的数据,循环遍历它们并将某些元素存储在列表中,并使用Python将每个结果列表附加到带有Pandas的数据帧.
它有效,除了我无法弄清楚如何在追加时保持标题行.它会随着每个追加消失或重复.
以下代码用作最新代码的示例:
import pandas as pd
for i in range(1,4):
data = [{'name': 'Company'+str(i), 'city': 'New York'}]
stuff = []
for element in data:
stuff.append(element)
df = pd.DataFrame(columns=["name",
"city"])
for record in stuff:
df = df.append(record, ignore_index=True)
df.to_csv('test.csv', mode='a', header=False, index=False)
Run Code Online (Sandbox Code Playgroud)
使用此代码,输出(csv文件)是:
Company1 New York
Company2 New York
Company3 New York
Run Code Online (Sandbox Code Playgroud)
但我正在寻找输出:
name city
Company1 New York
Company2 New York
Company3 New York
Run Code Online (Sandbox Code Playgroud)
谢谢!
但你已经设定header=False:
df.to_csv('test.csv', mode='a', header=False, index=False)
Run Code Online (Sandbox Code Playgroud)
你应该做:
df.to_csv('test.csv', mode='a', header=True, index=False)
Run Code Online (Sandbox Code Playgroud)
您只需将其设置True为第一次迭代,然后再设置False为后续迭代
基本上你只需要做以下事情:
# add this outside your for loop
writeHeader = True
# use the following where you write to csv
if writeHeader is True:
df.to_csv('test.csv', mode='a', header=True, index=False)
writeHeader = False
else:
df.to_csv('test.csv', mode='a', header=False, index=False)
Run Code Online (Sandbox Code Playgroud)
或类似的
所以完整的事情看起来像:
import pandas as pd
writeHeader = True
for i in range(1,4):
data = [{'name': 'Company'+str(i), 'city': 'New York'}]
stuff = []
for element in data:
stuff.append(element)
df = pd.DataFrame(columns=["name",
"city"])
for record in stuff:
df = df.append(record, ignore_index=True)
if writeHeader is True:
df.to_csv('test.csv', mode='a', header=True, index=False)
writeHeader = False
else:
df.to_csv('test.csv', mode='a', header=False, index=False)
Run Code Online (Sandbox Code Playgroud)