如何将逗号分隔的数字从数据帧转换为数字并获取平均值
How to convert comma separated numbers from a dataframe to to numbers and get the avg value
我正在处理一个数据集,其中一列的数字用逗号分隔。
我想将值转换为整数并获取它们的平均值以替换为当前异常。
例如:50,45,30,20
我想取平均值并用当前值替换它
您可以简单地定义一个函数来解压缩这些值,然后获取这些值的平均值。
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)
from numpy import mean
data.apply(lambda x: mean(list(map(lambda y: int(y.strip()), x.split(",")))))
您可以按照 GabrielBoehme 的建议应用自定义函数,但如果您可以控制数据导入,那么在数据导入阶段处理问题可能会更简洁一些。
import pandas as pd
data = pd.read_csv('foobar.csv', sep=',', thousands=',')
显然,您需要确保正确引用所有内容,以便正确解析 CSV。
我的解释较长,这里的其他解释可能更好...但如果您是 python 的新手,这可能更容易理解 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 交换。
我正在处理一个数据集,其中一列的数字用逗号分隔。 我想将值转换为整数并获取它们的平均值以替换为当前异常。
例如:50,45,30,20 我想取平均值并用当前值替换它
您可以简单地定义一个函数来解压缩这些值,然后获取这些值的平均值。
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)
from numpy import mean
data.apply(lambda x: mean(list(map(lambda y: int(y.strip()), x.split(",")))))
您可以按照 GabrielBoehme 的建议应用自定义函数,但如果您可以控制数据导入,那么在数据导入阶段处理问题可能会更简洁一些。
import pandas as pd
data = pd.read_csv('foobar.csv', sep=',', thousands=',')
显然,您需要确保正确引用所有内容,以便正确解析 CSV。
我的解释较长,这里的其他解释可能更好...但如果您是 python 的新手,这可能更容易理解 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 交换。