有条件地扩展Pandas DataFrame中的特定条目?

时间:2017-04-06 19:27:56

标签: python pandas dataframe

我正在尝试解析数据框并仅缩放符合特定条件的值。例如,如果我有:

df = [1,2,3,4]

我希望将所有小于2的值缩放10,我想返回以下数据帧:

df = [10,2,3,4]

现在,我的功能如下:

def scaleLessPartColumn(dataFrame, column_name, scale_factor, sort_num):
   dataFrame.ix[(dataFrame[column_name] < sort_num), column_name] *= scale_factor
   return dataFrame

但我相信这会缩放整个专栏而不是具体的参赛作品。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

这有效:

dataFrame[dataFrame[column_name] < sort_num] *= scale_factor

实施例

df = pd.DataFrame({"A": [1,2,3,4], "B": [5,2,4,3], "C": [2,2,1,4]})

df
#   A   B   C
#0  1   5   2
#1  2   2   2
#2  3   4   1
#3  4   3   4

df[df[["A", "B"]] < 3] *= 10

df
#    A  B   C
#0  10  5   2
#1  20  20  2
#2  3   4   1
#3  4   3   4

但你可能会发现这更具可读性:

dataFrame[column_name] = dataFrame[column_name].where(dataFrame[column_name]>=sort_num, 
                                                      dataFrame[column_name]*scale_factor)