Tay*_*lrl 5 python dataframe pandas
我最近迁移到 Python 作为我的主要分析工具,我希望能够复制第一个工具。& 最后的。SAS 中的功能。SAS 代码如下;
data data.out;
set data.in;
if first.ID then flag = 1;
if last.ID then flag = 1;
run;
Run Code Online (Sandbox Code Playgroud)
输出如下;
ID flag
AAAA 1
AAAA 0
AAAA 0
AAAA 1
BBBB 1
BBBB 0
BBBB 0
BBBB 1
CCCC 1
CCCC 0
CCCC 1
Run Code Online (Sandbox Code Playgroud)
关于如何在 Python 中执行此操作的任何想法?
如果您使用 python 和处理数字,这种类型的事情通常会使用pandas:
pip install pandas
Run Code Online (Sandbox Code Playgroud)
假设您有一个 CSV 文件,您可以使用 加载数据pd.read_csv。我不会对您的输入做出假设,因此请查看文档。加载数据框后,您就可以继续。
import pandas
df = pd.read_csv('file.csv')
df
ID
0 AAAA
1 AAAA
2 AAAA
3 AAAA
4 BBBB
5 BBBB
6 BBBB
7 BBBB
8 CCCC
9 CCCC
10 CCCC
df['flag'] = ((df.ID != df.ID.shift()) | (df.ID != df.ID.shift(-1))).astype(int)
df
ID flag
0 AAAA 1
1 AAAA 0
2 AAAA 0
3 AAAA 1
4 BBBB 1
5 BBBB 0
6 BBBB 0
7 BBBB 1
8 CCCC 1
9 CCCC 0
10 CCCC 1
Run Code Online (Sandbox Code Playgroud)
您也可以使用以下方法来做到这一点np.where(感谢 Brad Solomon 的建议):
df['flag'] = np.where((df.ID != df.ID.shift()) \
| (df.ID != df.ID.shift(-1)), 1, 0)
df
ID flag
0 AAAA 1
1 AAAA 0
2 AAAA 0
3 AAAA 1
4 BBBB 1
5 BBBB 0
6 BBBB 0
7 BBBB 1
8 CCCC 1
9 CCCC 0
10 CCCC 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3626 次 |
| 最近记录: |