如何在pd.Dataframe的每一列值内进行运算?
How to make operations within each columns value of a pd.Dataframe?
我有一个 pandas Dataframe,我想将单元格内的每个值生成后的结果写入列 'final_data['130 + 71444']'
以下数学运算:
final = pd.read_csv(path, header=0, parse_dates=True, index_col="Tagname")
final_data = pd.DataFrame(final)
已编辑:我试过了:
final_data['130 + 71444'] = (final_data['130.c'] + final_data['7144.c'])/final_data['c']
但是显示如下错误:
TypeError: unsupported operand type(s) for /: 'str' and 'str'
我该怎么做?
很简单。就像您定义的那样:
编辑
首先,您必须更改列的数据类型。我这里用的是float.
final_data['130.c'] = final_data['130.c'].astype('float32')
final_data['7144.c'] = final_data['7144.c'].astype('float32')
final_data['c'] = final_data[c'].astype('float32')
final_data['130 + 71444'] = (final_data['130.c'] + final_data['7144.c'])/final_data['c']
使用:
final_data['130 + 71444'] = (final_data['130.c'].astype(float) + final_data['7144.c'].astype(float))/final_data['c'].astype(float)
如果上面的代码不起作用,因为一些非数值使用 to_numeric
和 erriors='coerce'
将这些值转换为缺失值:
final_data['130 + 71444'] = (pd.to_numeric(final_data['130.c'], errors='coerce') + pd.to_numeric(final_data['7144.c'], errors='coerce') )/pd.to_numeric(final_data['c'], errors='coerce')
我有一个 pandas Dataframe,我想将单元格内的每个值生成后的结果写入列 'final_data['130 + 71444']'
以下数学运算:
final = pd.read_csv(path, header=0, parse_dates=True, index_col="Tagname")
final_data = pd.DataFrame(final)
已编辑:我试过了:
final_data['130 + 71444'] = (final_data['130.c'] + final_data['7144.c'])/final_data['c']
但是显示如下错误:
TypeError: unsupported operand type(s) for /: 'str' and 'str'
我该怎么做?
很简单。就像您定义的那样: 编辑 首先,您必须更改列的数据类型。我这里用的是float.
final_data['130.c'] = final_data['130.c'].astype('float32')
final_data['7144.c'] = final_data['7144.c'].astype('float32')
final_data['c'] = final_data[c'].astype('float32')
final_data['130 + 71444'] = (final_data['130.c'] + final_data['7144.c'])/final_data['c']
使用:
final_data['130 + 71444'] = (final_data['130.c'].astype(float) + final_data['7144.c'].astype(float))/final_data['c'].astype(float)
如果上面的代码不起作用,因为一些非数值使用 to_numeric
和 erriors='coerce'
将这些值转换为缺失值:
final_data['130 + 71444'] = (pd.to_numeric(final_data['130.c'], errors='coerce') + pd.to_numeric(final_data['7144.c'], errors='coerce') )/pd.to_numeric(final_data['c'], errors='coerce')