python - 如何从 pandas 的数据框中选择某些行

标签 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 中最好的解决方案是什么?

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

在此示例中:

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= 参数(如果可用)之外,实际上无法做更多“缩短”操作。

关于python - 如何从 pandas 的数据框中选择某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49740139/

相关文章:

python - 选择 Pandas 中特定行上方和下方的 N 行

python - 基于区域的图像检测与状态验证

python - MySQL 'IF EXISTS'命令在python中使用时导致错误

python - 在单个文件中提供多个终端命令并一次运行所有命令?

python - Itertools 创建列表并计算概率

python - 没有应用功能的 Pandas 数据框的数据透视表

python - 切片数据框

python - pandas dataframe groupby 并返回第 n 行,除非第 n 行不存在

python - 如何使用Python区分信号的下降沿?

python - 我的 pip 无法正确下载软件包