python - 如何在 python 3.4.4 中一次将相同的转换逻辑应用于多个列

标签 python python-3.x pandas dataframe

我有一个包含多个列的数据框df,我想一次将相同的逻辑应用于多个列。我知道如何一次对一列执行此操作,但有人知道如何一次对多个列应用相同的逻辑吗?

数据框df

col0  col1  col2  col3  col4  col5  col6  new_col
row0  24.0    83  42.0     7    96     0   NaN      192
row1  40.0     4   NaN    12    84     0   NaN      168
row2  83.0    22  80.0    26    15     0   NaN       30
row3  92.0    73  58.0     0    33     0   NaN       66
row4   NaN    63  35.0    70    95     0   NaN      190

我必须对 col4col5col6 应用一些转换。我可以一一完成,但如何一次对所有列执行此操作?

df['col4'] = df['col4'].apply(lambda n: n*2)
df['col5'] = df['col5'].apply(lambda n: n*2)
df['col6'] = df['col6'].apply(lambda n: n*2)

最佳答案

这取决于逻辑。如果可能的话,可以处理所有列,例如过滤后的 DataFrame 使用:

cols = ['col4','col5','col6']

df[cols] = df[cols] * 2

#short version
df[cols] *= 2

如果需要复杂的功能并且需要按元素处理每个单元格,请使用 DataFrame.applymap :

cols = ['col4','col5','col6']
df[cols] = df[cols].applymap(func)

关于python - 如何在 python 3.4.4 中一次将相同的转换逻辑应用于多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64027683/

相关文章:

python - 登录 GCP 和本地

python - 无法使多变量线性回归收敛

python - 将句子的字符串表示形式列表转换为词汇集

python - 在 sklearn 的 Pipeline 中使用 LabelEncoder 给出 : fit_transform takes 2 positional arguments but 3 were given

python - PYODBC 到 Pandas - DataFrame 不工作 - 传递值的形状是 (x,y),索引暗示 (w,z)

Python Pandas 使用新的 x 轴进行插值

python - 使用python在循环中的文件中多次写入

python - 为什么 mySQL Python 查询不插入新条目?

Python 的 str.replace 不抛出异常

python - 为共享服务器上的 http 请求定义 PYTHONPATH