Python 使用pandas应用程序传递一行和整个数据帧

Python 使用pandas应用程序传递一行和整个数据帧,python,pandas,Python,Pandas,我有一个df,我想用它创建一些新的COL。我如何使用apply函数来传递行中的数据,以及使用它传递整个df?我需要整个df进行一些过滤,数据以每行中的值为准 也许我不需要使用apply,但这是我想到的第一件事。谢谢你,非常感谢你的帮助 除df外: +----+--------+--------+ | ID | Family | Amount | +----+--------+--------+ | 1 | A | 2 | | 2 | A | 10 | |

我有一个df,我想用它创建一些新的COL。我如何使用apply函数来传递行中的数据,以及使用它传递整个df?我需要整个df进行一些过滤,数据以每行中的值为准

也许我不需要使用apply,但这是我想到的第一件事。谢谢你,非常感谢你的帮助

除df外:

+----+--------+--------+
| ID | Family | Amount |
+----+--------+--------+
|  1 | A      |      2 |
|  2 | A      |     10 |
|  3 | B      |      4 |
|  4 | B      |      7 |
+----+--------+--------+
结果:

+----+--------+--------+-----------+------------+
| ID | Family | Amount | Total_Fam | Id_Percent |
+----+--------+--------+-----------+------------+
|  1 | A      |      2 |        12 |       .166 |
|  2 | A      |     10 |        12 |       .833 |
|  3 | B      |      4 |        11 |       .363 |
|  4 | B      |      7 |        11 |       .636 |
+----+--------+--------+-----------+------------+

在列上使用
apply
单独传递每一行。如果对整个数据集使用
apply
,它将看到整个数据集,因此,您可以使用所有列。正如您在下面的示例中所看到的,
df['new_2]
是使用我应用于数据集的函数生成的,我不需要将
df
传递给它

import pandas as pd
import seaborn as sns

df = sns.load_dataset('iris')

df['new'] = df['species'].apply(lambda x: x[:2])

def sumIsMore(dataframe):
    x = dataframe['sepal_length']
    y = dataframe['sepal_width']

    return x+y >= 8.5

df['new_2'] = df.apply(sumIsMore, axis=1)


首先,按
Family
分组,然后转换金额,然后您可以直接将
amount
除以新列

df['Total_Fam'] = df.groupby('Family')['Amount'].transform(np.sum)
df['Id_Percent'] = df['Amount']/df['Total_Fam']
df

嘿,快速提问,如果我有更多我关心的颜色,比如我还必须匹配其他项目,比如日期和东西,该怎么办。我可以继续向groupby语句添加项目吗?@mike_gundy123,你的问题是向grouper添加更多的项目还是你必须转换/应用的列?Nvm我找到了答案。我的意思是给石斑鱼添加更多的食物。