我有一个熊猫数据框,我想根据条件在最后一列“ n”次循环。
import random as random
import pandas as pd
p = 0.5
df = pd.DataFrame()
start = []
for i in range(5)):
if random.random() < p:
start.append("0")
else:
start.append("1")
df['start'] = start
print(df['start'])
基本上,我想循环遍历最后一列“ n”次,如果值是0,则以概率p将其更改为1,这样结果将成为新的最后一列。 (我正在以概率p模拟每个时间单位的开-关)。
例如经过一轮迭代,数据框看起来像这样:
0 0
0 1
1 1
0 0
0 1
两点后:
0 0 1
0 1 1
1 1 1
0 0 0
0 1 1
做到这一点的最佳方法是什么?
对不起,如果我问错了,我已经尝试了数小时的Google搜索解决方案,并且空了。
答案 0 :(得分:1)
赞。将col附加为名称1,2,...
# continue from question code ...
# colname is 1, 2, ...
for col in range(1, 5):
tmp = []
for i in range(5):
# check final col
if df.iloc[i,col-1:col][0] == "0":
if random.random() < p:
tmp.append("0")
else:
tmp.append("1")
else: # == 1
tmp.append("1")
# append new col
df[str(col)] = tmp
print(df)
# initial
s
0 0
1 1
2 0
3 0
4 0
# result
s 1 2 3 4
0 0 0 1 1 1
1 0 0 0 0 1
2 0 0 1 1 1
3 1 1 1 1 1
4 0 0 0 0 0