【发布时间】:2016-11-19 20:37:51
【问题描述】:
最近,我正在从 SAS 转换为 Python pandas。我的一个问题是,熊猫在 SAS 中是否具有类似保留的功能。
我的 SAS 代码是:
data df1;
retain col3 " ";
set df;
by ID ;
if first.ID then col3=col1;
else col3=col3;
我在 SAS 代码中的另一个条件是:
data df1;
retain col3;
set df;
by ID ;
if first.ID then col3=1;
else col3=col3+1;
我要转换的下一个 SAS 代码如下所示:
proc sql;
create table t1 as
select
c1, c2, c3, c4, c5, flag, max(flag) as MAX_flag
from t1
group by c1, c2, c3, c5;
run;
我在 pandas 中进行了如下尝试,但似乎我犯了一些愚蠢的错误。如果有人知道如何将上述 sas 代码 block3 复制到 pandas 中
t1=t1[['c1','c2','c3','c4','c5','c6']]
t1.loc[:,'Max_flag']=t1['flag'].max()
t1.groupby(['c1','c2','c3','c5'])
在我的例子中。 col3 是 B,col1 是 a。 应该做的条件是 df.groupby(['ID'],as_index=False).first()
我有 2 列 ID,A。 我的要求是输入数据 df1:
ID A
1 a
1 b
2 c
1 p
2 q
输出数据框应该有一个多列名称作为 B。它将按 ID.first() 分组。并将所有分组 ID 的 col A 的数据复制到 col B。
输出应该是df1
ID A B
1 a a
1 b a
2 c c
1 p a
2 q c
**My key requirement is to convert above SAS code to Pnadas**
【问题讨论】:
-
能否提供输入和输出数据的示例?
-
输入将类似于具有 id 列的 10 列的表...并且我需要输出数据应包含 11 列的表,其值在我们的新列中,即 col_2 中的 col_1。也没有。新数据框中的记录也需要相同。
-
您能否编辑您的问题并包含示例数据?它将使其更具可读性,并让其他人更好地理解您的要求。有关如何做得更好的建议,请参阅 here。
-
感谢您提供的数据,但它并没有说明您要做什么。目前的数据表明简单的
df['col4']=df['col1']会起作用,但我相信你问的是更复杂的问题。您能否提供数据示例来解释需要做什么? -
您能否提供 simple 数据示例,说明您需要什么转换?您提供 SAS 代码作为解释,但我没有使用 SAS 的经验,所以我无法从该代码中理解需要什么。当然,您可以等到知道 SAS 和 pandas 的人出现并回答您的问题,但在我看来,最好让那些只知道 pandas 的人理解您的问题。这将减少您在得到答复之前需要等待的时间。
标签: python pandas dataframe sas