Python 如何使用foreach更改数据帧列?

Python 如何使用foreach更改数据帧列?,python,pandas,Python,Pandas,我试图从字符串中获取一个浮点,然后缩放它,然后用新值替换旧值,但是“sample”变量似乎只是一个副本,而不是对列中项目的引用 for sample in AmpDataFrame['Sample']: split_sample = sample.partition(' ') try: tempsample = float(split_sample[0]) tempsample *= CurrentShunt_mVtoAmp sam

我试图从字符串中获取一个浮点,然后缩放它,然后用新值替换旧值,但是“sample”变量似乎只是一个副本,而不是对列中项目的引用

for sample in AmpDataFrame['Sample']:
    split_sample = sample.partition(' ')
    try:
        tempsample = float(split_sample[0])
        tempsample *= CurrentShunt_mVtoAmp
        sample = str(tempsample)
    except ValueError:
        print("Not a float")

至于失败的原因,您正在迭代
系列中的行值
,因此任何突变都会在副本而不是视图上操作。此外,通过在整个df上执行以下操作,您可以实现您想要的:

AmpDataFrame['Sample'] = (AmpDataFrame['Sample'].str.split(' ').str[0].astype(float) * CurrentShunt_mVtoAmp).astype(str)

因此,这将调用
str.split
并返回第一个split,强制转换为float并乘以您的常量值,然后将其强制转换回
str

难道您不能只执行
AmpDataFrame['Sample']=(AmpDataFrame['Sample'].str.split('').str[0].astype(float)*currentsparant\u mVtoAmp.astype(str)
有效吗。我不知道我能做我认为是lamda的事情,就像python中那样。我基本上是一个C#dev。那么这种行为会被称为什么呢?它在整个系列中进行某种迭代。你是指我的代码还是你的代码。我的代码直接赋值回原始列,您的方法处理的是iterable,而不是迭代器指向代码的内容。我假设它在幕后迭代序列,并对序列中的每个值执行str.split(“”).str[0].astype(float)*currentspitch\u mVtoAmp).astype(str)。在C#中,可以使用LINQ/lamda表达式。