簡體   English   中英

在Python中覆蓋數據框中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM