如何在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']

这是可能的,因为您的数据框中有 numpy 数组作为列。另请参阅 pandas and numpy 的文档。

使用:

final_data['130 + 71444'] = (final_data['130.c'].astype(float) + final_data['7144.c'].astype(float))/final_data['c'].astype(float)

如果上面的代码不起作用,因为一些非数值使用 to_numericerriors='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')