我正在處理一個資料集,其中一列的數字用逗號分隔。我想將這些值轉換為整數并獲得它們的平均值以替換為當前例外。
例如:50,45,30,20 我想獲取平均值并將其替換為當前值
uj5u.com熱心網友回復:
您可以簡單地定義一個解包這些值的函式,然后獲取這些值的平均值。
def get_mean(x):
#split into list of strings
splited = x.split(',')
#Transform into numbers
y = [float(n) for n in splited]
return sum(y)/len(y)
#Apply on desired column
df['col'] = df['col'].apply(get_mean)
uj5u.com熱心網友回復:
from numpy import mean
data.apply(lambda x: mean(list(map(lambda y: int(y.strip()), x.split(",")))))
uj5u.com熱心網友回復:
您可以應用 GabrielBoehme 建議的自定義函式,但如果您可以控制資料匯入,則在資料匯入階段處理問題可能會更簡潔一些。
import pandas as pd
data = pd.read_csv('foobar.csv', sep=',', thousands=',')
顯然,您需要確保正確參考所有內容,以便正確決議 CSV。
uj5u.com熱心網友回復:
我的解釋更長,這里的其他解釋可能更好......但如果你是 python 的新手,這可能更容易理解。
cell_num = "1,2,3,4,5,6,7"
#Splitting the numbers by , and making a list of them
cell_numbers = cell_num.split(",")
#Run loop to sum the values in the list
sum_num = 0
for num in cell_numbers:
sum_num = int(num)
#getting the mean
mean = int(sum_num) / len(cell_numbers)
#now printing your final number
print(mean)
如果您有小數...請務必將 int 與 float 交換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455721.html
