gpt4 book ai didi

python - 从 R 到 Python : define multiple columns from multiple columns in a pandas dataframe

转载 作者:行者123 更新时间:2023-12-01 00:59:31 30 4
gpt4 key购买 nike

作为 R 用户,我可以操作 data.table 中的列来派生一组新列,使用 pandas datafframes 实现此目的的最佳方法是什么?

这是一个可重现的示例(我使用的是 R 3.2.5 和 Python 3.6):

R代码:

library(data.table)

df = data.table(iris)
df[,.(ratio1 = Sepal.Length/Sepal.Width, ratio2 = Petal.Length/Petal.Width)]


df[,.(ratio1 = Sepal.Length/Sepal.Width, ratio2 = Petal.Length/Petal.Width)]

最后一个命令将返回:

> df[,.(ratio1 = Sepal.Length/Sepal.Width, ratio2 = Petal.Length/Petal.Width)]
ratio1 ratio2
1: 1.457143 7.000000
2: 1.633333 7.000000
3: 1.468750 6.500000
4: 1.483871 7.500000
5: 1.388889 7.000000
---
146: 2.233333 2.260870
147: 2.520000 2.631579
148: 2.166667 2.600000
149: 1.823529 2.347826
150: 1.966667 2.833333

Python 代码:

import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

pd.DataFrame(list(df.apply(lambda x: {'ratio1':x['sepal length (cm)']/x['sepal width (cm)'], 'ratio2':x['petal length (cm)']/x['petal width (cm)']}, axis=1)))

最后一个命令将返回:

In[6]: pd.DataFrame(list(df.apply(lambda x: {'ratio1':x['sepal length (cm)']/x['sepal width (cm)'], 'ratio2':x['petal length (cm)']/x['petal width (cm)']}, axis=1)))
Out[6]:
ratio1 ratio2
0 1.457143 7.000000
1 1.633333 7.000000
2 1.468750 6.500000
3 1.483871 7.500000
4 1.388889 7.000000
5 1.384615 4.250000

这是我的问题:我的 Python 实现让我觉得效率低下。我正在计算一系列字典,将其投影到一个列表,然后调用 DataFrame 构造函数。换句话说,它不是从数据帧到数据帧的直接操作。这转化为详细代码:R 代码段的最后一行是 76 个字符,Python 代码段的最后一行是 158 个字符。

有更好的方法吗?谢谢!

附注请注意,我不想将派生列(示例中的ratio1、ratio2)永久添加到原始数据集中。我想动态计算一些东西并绘制它或聚合它而不改变数据。

最佳答案

您不需要 list()apply() 方法:

import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

pd.DataFrame({"ratio1": df['sepal length (cm)']/df['sepal width (cm)'], "ratio2": df['petal length (cm)']/df['petal width (cm)']})

如果您希望将变量添加到原始数据集中,则可以使用 assign() 方法。

关于python - 从 R 到 Python : define multiple columns from multiple columns in a pandas dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55924156/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com