我从xml
文件中提取了一些日期和温度值,并希望从中获取数据框。因此,在某些循环之后,我定义了变量temperature
和date
并将其值附加到循环外的列表(placeholder
)中。后来,我从它们那里制作了一个DataFrame,并在制作数据框时直接分配了列名。但是我认为,每次我运行代码时,都会随机分配对或错列名称。
这是我的代码:
placeholder=[]
for timeserie in timeseries:
date = re.findall('<entryisIntraday\D*(\d*.\d*.\d*)', timeserie)
temperature = re.findall('<value>(.*)<\/value>', timeserie)[0]
placeholder.append([date, temperature])
print(placeholder)
df = pd.DataFrame(placeholder, columns= {"DATE", "TEMP"})
print(df)
运行代码后,有时结果如下:
[['2019-10-29', '4.4'], ['2019-10-30', '3.6'], ['2019-10-31', '2.1'] ...
TEMP DATE
0 2019-10-29 4.4
1 2019-10-30 3.6
2 2019-10-31 2.1
有时是这样的:
[['2019-10-29', '4.4'], ['2019-10-30', '3.6'], ['2019-10-31', '2.1'], ...
DATE TEMP
0 2019-10-29 4.4
1 2019-10-30 3.6
2 2019-10-31 2.1
在构建DataFrame之后分配列名时,我没有这个问题:
df = pd.DataFrame(placeholder)
df=df.rename(columns= {0:"DATE",1:"TEMP"})
我该如何解决这个问题?
答案 0 :(得分:3)
DataFrame构造函数的columns
参数应该是list
,而不是set
:
df = pd.DataFrame(placeholder, columns = ["DATE", "TEMP"])