[英]How do i combine the results from a while loop winto one output?
我想從while
循環中取出一張表,而不是多張表。 我試圖合並數據框,但這只給出了多個包含 2 行的表,而不是 1 個包含所有數據的大表。 while
循環用於從每個傳感器獲取數據,這些數據需要顯示在一個表中。
我嘗試以不同的方式合並數據,例如df.merge
,還使用其他語句來獲取數據,例如 if/else 和 for 語句。 我最接近想要的結果是使用 while 語句並通過pd.concat
組合結果。 這給了我 2 行的表格,但沒有提供所有結果的想要的表格。
兩個數據框中的維度相同。 數據框是使用這個制作的:
d = {
"name": [loc_name],
"onder(<"+ str(CO2_low)+ "ppm)": [lessperc],
"tussen("+str(CO2_low)+"-"+str(CO2_high)+"ppm)": [betweenperc],
"boven(>"+ str(CO2_high)+"ppm)": [moreperc]
}
制作 dataframe 之前的虛擬數據,所以這在我的代碼中是 d:
{'name': ['1.04'], 'onder(<950ppm)': [1.0], 'tussen(950-1100ppm)': [0.0], 'boven(>1100ppm)': [0.0]}
{'name': ['1.05'], 'onder(<950ppm)': [0.98], 'tussen(950-1100ppm)': [0.2], 'boven(>1100ppm)': [0.0]}
{'name': ['1.06'], 'onder(<950ppm)': [0.93], 'tussen(950-1100ppm)': [0.4], 'boven(>1100ppm)': [0.3]}
以下是所需結果的示例:
姓名 | <950 | 950-1100 | >1100 |
---|---|---|---|
1.04 | 1.0 | 0.0 | 0.0 |
1.05 | 0.98 | 0.2 | 0.0 |
1.06 | 0.93 | 0.4 | 0.3 |
我目前使用的代碼:
#Create the dataframe
while(k==0):
k = k + 1
#d is used to get the data from the sensors
d = (sensordata)
df1 = pd.DataFrame(data=d)
#Add rows for the next sensor/location
else:
d = (sensordata)
df2 = pd.DataFrame(data=d)
frames = [df1, df2]
result = pd.concat(frames)
print(result)
為了說明我做了一個 for 循環,因為提供的代碼示例是有限的。 正如@Parfait 所說,您可能想要做的是在循環之前初始化一個變量。
這可能是您填寫的列表,稍后創建 dataframe 。 或者你可以直接 append 到 dataframe 為每個 d 值進來。這里的用例不是很清楚,但在我看來你想立即更新每個新的 d 。
希望這個例子可以幫助:
d_values = [
{'name': ['1.04'], 'onder(<950ppm)': [1.0], 'tussen(950-1100ppm)': [0.0], 'boven(>1100ppm)': [0.0]},
{'name': ['1.05'], 'onder(<950ppm)': [0.98], 'tussen(950-1100ppm)': [0.2], 'boven(>1100ppm)': [0.0]},
{'name': ['1.06'], 'onder(<950ppm)': [0.93], 'tussen(950-1100ppm)': [0.4], 'boven(>1100ppm)': [0.3]}
]
result = None
for d in d_values:
if result is None:
result = pd.DataFrame(data=d)
else:
df2 = pd.DataFrame(data=d)
result = pd.concat([result,df2], ignore_index=True)
現在您將對位於循環之外的結果 Dataframe 執行 concat。
您可能只收到 2 個結果的原因是因為在下一次運行中您沒有使用結果更新,而是再次使用 df1 和 df2。
Output
name onder(<950ppm) tussen(950-1100ppm) boven(>1100ppm)
0 1.04 1.00 0.0 0.0
1 1.05 0.98 0.2 0.0
2 1.06 0.93 0.4 0.3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.