[英]overwriting values in dataframe in python
我是python的新手,因此對於您的專業知識而言,這似乎是一個簡單的問題。
我有6個類別(0到5),每個類別都有4個子類別:“ 3”,“ 4”,“ 5”,“ 6”。
為此,我使用以下方法創建了一個數據框:
df=pd.DataFrame(index=list(range(5)),columns=list([3,4,5,6])
現在,我從循環中得到一些計算值:
for i in range(5):
for j in list([3,4,5,6]):
somecalculation=a
現在,我試圖用這些計算替換df的值,例如第二次迭代(即, for i=0,j=4
),我得到somecalculation=b
,對於第三次omecalculation=c
以及進一步的d。 當循環再次遍歷i=2
,我得到e,f,g,h的計算結果,依此類推,以進行進一步的迭代。 我試圖在獲得這些值后立即將它們附加到df,但是我沒有得到所需的輸出,因為
3 4 5 6
0 a b c d
1 e f g h
2 i j k l
.........
.........
.........
因為最終,我想使用它們的索引取列值的平均值,但是替換數據框的值變得很麻煩。
您提出的迭代添加到DataFrame行的建議不是最佳選擇。 它將減慢代碼的速度。 相反,您可以將輸出追加到列表中,然后根據需要調整列表的形狀,最終將其轉換為pd.DataFrame。 這將比您建議的速度更快。 例如:
import pandas as pd, numpy as np
list1=[] #initialize the list
list1.extend([i]) #where i is the output from your loop
df = pd.DataFrame(np.reshape(list1,(5,4)),columns=['a','b','c','d']) # finally you can reshape the list as desired (eg: 5 row X 4 cols) and write it to dataframe in a single step
如果這有幫助,請不要忘記接受它:)
不知道我是否正確理解了您的問題,但是有多種方法可以將值插入所需的數據框單元格。
例如行,
df.xs(1)['e'] = x
將值x插入索引值為1且位於列“ e”中的單元格。
如果您不想計算特定列的平均值並將其插入到特殊單元格中,則可以執行以下操作:
import numpy as np
df.xs(desired_index_value)['desired_column_name'] = np.mean(df.xs('col_x',axis=1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.