Python 使用pandas应用程序传递一行和整个数据帧
我有一个df,我想用它创建一些新的COL。我如何使用apply函数来传递行中的数据,以及使用它传递整个df?我需要整个df进行一些过滤,数据以每行中的值为准 也许我不需要使用apply,但这是我想到的第一件事。谢谢你,非常感谢你的帮助 除df外:Python 使用pandas应用程序传递一行和整个数据帧,python,pandas,Python,Pandas,我有一个df,我想用它创建一些新的COL。我如何使用apply函数来传递行中的数据,以及使用它传递整个df?我需要整个df进行一些过滤,数据以每行中的值为准 也许我不需要使用apply,但这是我想到的第一件事。谢谢你,非常感谢你的帮助 除df外: +----+--------+--------+ | ID | Family | Amount | +----+--------+--------+ | 1 | A | 2 | | 2 | A | 10 | |
+----+--------+--------+
| 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我找到了答案。我的意思是给石斑鱼添加更多的食物。