在 RI 中,可以对数据框的所有数字列应用对数(或平方根等)变换,方法是:
logdf <- log10(df)
Run Code Online (Sandbox Code Playgroud)
Python/Pandas 中是否有等价的东西?我看到有一个“转换”和一个(类似 R 的)“应用”函数,但在这种情况下无法弄清楚如何使用它们。
感谢您的任何提示或建议。
Rex*_*Low 11
假设您有一个名为的数据框 df
您可以先列出可能的数字类型,然后进行循环
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
for c in [c for c in df.columns if df[c].dtype in numerics]:
df[c] = np.log10(df[c])
Run Code Online (Sandbox Code Playgroud)
或者,使用 lambda 运算符和np.dtype.kind的单行解决方案
numeric_df = df.apply(lambda x: np.log10(x) if np.issubdtype(x.dtype, np.number) else x)
Run Code Online (Sandbox Code Playgroud)
如果大多数列都是数字,则仅使用它可能有意义try,如果不起作用则跳过该列:
for column in df.columns:
try:
df[column] = np.log10(df[column])
except (ValueError, AttributeError):
pass
Run Code Online (Sandbox Code Playgroud)
当然,如果您愿意,可以将其包装在函数中。
如果所有列都是数字,您甚至可以简单地执行以下操作
df_log10 = np.log10(df)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10093 次 |
| 最近记录: |