遍历熊猫列,并在满足条件的情况下创建新列

时间:2020-01-24 11:53:15

标签: python pandas

我有一个熊猫数据框,我想根据条件在最后一列“ 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搜索解决方案,并且空了。

1 个答案:

答案 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