数据框单元格中的两个数字,试图将它们转换为均值
Two numbers in a cell of a dataframe, trying to convert them in the mean
此图像是从数据帧中提取的。
col1 col2
0 Apple iPhone X - 64GB - Gris Espacial (Libre) 319,00
1 IPHONE X 64GB/256GB, ENVIO DESDE ESPAÑA, GARAN. 355,00 459,00
我想做的是:
将单元格 355.00 459.00 转换为两个数字的平均值,有更多单元格有两个数字,总是两个,我想以相同的方式更改,所以我想为所有情况制作一段代码不只是一个数字。
col1 col2
0 Apple iPhone X - 64GB - Gris Espacial (Libre) 319,00
1 IPHONE X 64GB/256GB, ENVIO DESDE ESPAÑA, GARAN. 407
谢谢。
尝试将字符串表示形式转换为浮点数列表。检查 to_floats
方法以获得解决方案。用空格分开。将 ,
替换为 .
以使其可由 float
解析。 pandas 中的单元格可以包含列表。我们使用 np.mean
:
取浮点数列表的平均值
import pandas as pd
import numpy as np
df = pd.DataFrame({ 'c' : ['1,0 2,0', '3,0'] })
def to_floats(s):
'''Helper method to convert a string containing multiple
numbers with commas into a list of floats.'''
return [float(x.replace(',', '.')) for x in s.split()]
df['c'] = df['c'].apply(lambda x: np.mean(to_floats(x)))
如果该列包含空字符串 ''
,它们将被转换为 NaN
。您需要决定这对您的应用程序是否有意义。
在pandas中,您可以进行以下操作
如果单元格中的数据是 object.str 格式,则将它们转换为每个单元格的整数列表
现在检查每个单元格中列表的长度。如果长度大于 1,则取其平均值,否则只取列表中的唯一元素。
def col2_transformation(cell_data):
# I am assuming that cell data is in string format
# and numbers are separated by space
if ' ' in cell_data:
int_list = list(map(int, cell_data.split(' '))
return sum(int_list) / len(int_list)
elif cell_data:
return int(cell_data)
else:
return 0 # setting a default value in case input is None
df['col2'] = df['col2'].map(col2_transformation)
此图像是从数据帧中提取的。
col1 col2
0 Apple iPhone X - 64GB - Gris Espacial (Libre) 319,00
1 IPHONE X 64GB/256GB, ENVIO DESDE ESPAÑA, GARAN. 355,00 459,00
我想做的是: 将单元格 355.00 459.00 转换为两个数字的平均值,有更多单元格有两个数字,总是两个,我想以相同的方式更改,所以我想为所有情况制作一段代码不只是一个数字。
col1 col2
0 Apple iPhone X - 64GB - Gris Espacial (Libre) 319,00
1 IPHONE X 64GB/256GB, ENVIO DESDE ESPAÑA, GARAN. 407
谢谢。
尝试将字符串表示形式转换为浮点数列表。检查 to_floats
方法以获得解决方案。用空格分开。将 ,
替换为 .
以使其可由 float
解析。 pandas 中的单元格可以包含列表。我们使用 np.mean
:
import pandas as pd
import numpy as np
df = pd.DataFrame({ 'c' : ['1,0 2,0', '3,0'] })
def to_floats(s):
'''Helper method to convert a string containing multiple
numbers with commas into a list of floats.'''
return [float(x.replace(',', '.')) for x in s.split()]
df['c'] = df['c'].apply(lambda x: np.mean(to_floats(x)))
如果该列包含空字符串 ''
,它们将被转换为 NaN
。您需要决定这对您的应用程序是否有意义。
在pandas中,您可以进行以下操作
如果单元格中的数据是 object.str 格式,则将它们转换为每个单元格的整数列表
现在检查每个单元格中列表的长度。如果长度大于 1,则取其平均值,否则只取列表中的唯一元素。
def col2_transformation(cell_data):
# I am assuming that cell data is in string format
# and numbers are separated by space
if ' ' in cell_data:
int_list = list(map(int, cell_data.split(' '))
return sum(int_list) / len(int_list)
elif cell_data:
return int(cell_data)
else:
return 0 # setting a default value in case input is None
df['col2'] = df['col2'].map(col2_transformation)