Python 如何从pandas中的数据帧中选择某些行

Python 如何从pandas中的数据帧中选择某些行,python,pandas,numpy,data-manipulation,Python,Pandas,Numpy,Data Manipulation,1-如何在一列中选择5个不同的值 例如: **Car** Fiat Fiat Hyundai Mitsubish Kia Kia Hyundai renault porsche 例如,如何选择有(菲亚特、现代、起亚)的行 我试过这个: df.loc[df['cars'].isin("Fiat", "hyundai" , "Kia")] 但没有成功 第二个问题: 在R中,我们使用管道操作符以减少新副本的数量*。python中最好的解决方案是什么 *更新-这是创建多个步骤的操作数据的好方法吗

1-如何在一列中选择5个不同的值

例如:

**Car**

Fiat
Fiat
Hyundai
Mitsubish
Kia
Kia
Hyundai
renault
porsche
例如,如何选择有(菲亚特、现代、起亚)的行

我试过这个:

df.loc[df['cars'].isin("Fiat", "hyundai" , "Kia")]
但没有成功

第二个问题:

在R中,我们使用管道操作符以减少新副本的数量*。python中最好的解决方案是什么

*更新-这是创建多个步骤的操作数据的好方法吗

在本例中:

df1 = df1.dropna()
df1 = df1[(df1['Meses'] != 'Total') & (df1['Orcado x Realizado'] == 'Realizado') & (df1['Area Negocio'] == 'Total das Áreas de Negócios')]
df1['Meses'] = df1['Meses'].replace({'M1': '01', 'M2': '02', 'M3': '03', 'M4': '04', 'M5': '05', 'M4': '04', 'M5': '05', 'M6': '06', 'M7': '07', 'M8': '08', 'M9': '09', 'M10': '10', 'M11': '11', 'M12': '12'})
df1['Date'] = pd.to_datetime(df1.Ano.astype(str) + '-' + df1.Meses.astype(str))
df1['Values'] = (df1['Values'] / 1000000)
df1 = df1[['Date', 'Contas Resultado', 'Values']]

有没有一种方法可以缩短代码,而不必创建新变量?

对于第一个问题:

使用此代码:

df.loc[df['cars'].isin("Fiat", "hyundai" , "Kia")]
您需要使用一个列表:

df.loc[df['cars'].isin(["Fiat", "hyundai" , "Kia"])]
关于第二个问题:

我不知道你说的创建新变量是什么意思。看起来您只有一个(
df1

编辑 此代码:

df1 = df1.dropna()
df1 = df1[(df1['Meses'] != 'Total') & (df1['Orcado x Realizado'] == 'Realizado') & (df1['Area Negocio'] == 'Total das Áreas de Negócios')]
df1['Meses'] = df1['Meses'].replace({'M1': '01', 'M2': '02', 'M3': '03', 'M4': '04', 'M5': '05', 'M4': '04', 'M5': '05', 'M6': '06', 'M7': '07', 'M8': '08', 'M9': '09', 'M10': '10', 'M11': '11', 'M12': '12'})
df1['Date'] = pd.to_datetime(df1.Ano.astype(str) + '-' + df1.Meses.astype(str))
df1['Values'] = (df1['Values'] / 1000000)
df1 = df1[['Date', 'Contas Resultado', 'Values']]
可简化为:

df1.dropna(inplace = True) # shortened
df1 = df1[(df1['Meses'] != 'Total') & (df1['Orcado x Realizado'] == 'Realizado') & (df1['Area Negocio'] == 'Total das Áreas de Negócios')]
df1['Meses'].replace({'M1': '01', 'M2': '02', 'M3': '03', 'M4': '04', 'M5': '05', 'M4': '04', 'M5': '05', 'M6': '06', 'M7': '07', 'M8': '08', 'M9': '09', 'M10': '10', 'M11': '11', 'M12': '12'}, inplace = True) # shortened
df1['Date'] = pd.to_datetime(df1.Ano.astype(str) + '-' + df1.Meses.astype(str))
df1['Values'] = (df1['Values'] / 1000000)
df1 = df1[['Date', 'Contas Resultado', 'Values']]

除了使用可用的
inplace=
参数之外,真的不能做更多的“缩短”了。

你能包括原始数据框是什么样子吗?对于你的第一个问题,只需在你的
.isin()中列出你的汽车品牌。
df.loc[df['cars'].isin([“菲亚特”,“现代”,“起亚])])
,当我写这篇文章时“df1=。。。“很多时候,这是一种执行多个操作步骤的好方法吗?还是它会产生比必要的更多的过程?谢谢。只是为了确认:在这种情况下,df1变量的每个新副本都是必要的?@Cesar这是正确的。您可能可以使用,但我无法确认,除非看到您的一些数据。