Pandas Dataframe - 如何检查列中数值的符号,如果为负则移除符号并在发生这种情况时创建另一列?
Pandas Dataframe - How do you check the sign of numeric values in a column, remove the sign if negative & create another column if this has happened?
Python 3.8, 使用 Pandas.
我试图从 pandas 数据框列 'DATA' 中的负数中删除符号以仅保留大小,即所有值都是正数。本质上,将一列中的值乘以 -1,但仅当它为负时。这是简单的一点。然后在已反转的数据框中创建一条记录。所以在这个例子中创建另一个名为“Tubes Inverted”的列
#Check sign and create a column recording if this has been inverted.
num = df['DATA']._get_numeric_data()
if num < 0:
df['Tubes Inverted'] = "Yes"
else:
df['Tubes Inverted'] = "No"
num[num < 0] = num*-1
这里的问题是我试图确定一个系列的真值,这是模棱两可的并且无法工作所以我试过:
num = df['DATA']._get_numeric_data()
for i in num:
if i < 0:
df['Tubes Inverted'] = "Yes"
else:
df['Tubes Inverted'] = "No"
num[num < 0] = num*-1
但后来我认为这只是它正在测试的数据的索引位置,而不是数据本身。
必须有一个更优雅和 pythonic 的解决方案!
这里有 2 个要求,这里也不需要循环:
首先,检查条件后使用np.where
创建一个条件列:
df['Tubes Inverted'] = np.where(df['DATA']<0,"Yes","No")
然后使用 series.abs()
您可以将 DATA
列转换为绝对值。
df['DATA'] = df['DATA'].abs()
Python 3.8, 使用 Pandas.
我试图从 pandas 数据框列 'DATA' 中的负数中删除符号以仅保留大小,即所有值都是正数。本质上,将一列中的值乘以 -1,但仅当它为负时。这是简单的一点。然后在已反转的数据框中创建一条记录。所以在这个例子中创建另一个名为“Tubes Inverted”的列
#Check sign and create a column recording if this has been inverted.
num = df['DATA']._get_numeric_data()
if num < 0:
df['Tubes Inverted'] = "Yes"
else:
df['Tubes Inverted'] = "No"
num[num < 0] = num*-1
这里的问题是我试图确定一个系列的真值,这是模棱两可的并且无法工作所以我试过:
num = df['DATA']._get_numeric_data()
for i in num:
if i < 0:
df['Tubes Inverted'] = "Yes"
else:
df['Tubes Inverted'] = "No"
num[num < 0] = num*-1
但后来我认为这只是它正在测试的数据的索引位置,而不是数据本身。
必须有一个更优雅和 pythonic 的解决方案!
这里有 2 个要求,这里也不需要循环:
首先,检查条件后使用np.where
创建一个条件列:
df['Tubes Inverted'] = np.where(df['DATA']<0,"Yes","No")
然后使用 series.abs()
您可以将 DATA
列转换为绝对值。
df['DATA'] = df['DATA'].abs()