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/