熊猫-在for循环迭代的末尾添加一行

时间:2019-07-04 15:19:26

标签: python pandas

所以我有一个for循环,该循环获取一系列值并进行一些测试:

list = [1, 2, 3, 4, 5, 6]
df = pd.DataFrame(columns=['columnX','columnY', 'columnZ'])
for value in list:
    if value > 3:
       df['columnX']="A"
    else:
       df['columnX']="B"
       df['columnZ']="Another value only to be filled in this condition"
    df['columnY']=value-1

我如何做到这一点,并将每次循环迭代的所有值都放在一行中,而不管结果如何?我可以保留一些列为空吗?

我的意思是类似以下过程:

[create empty row] -> [process] -> [fill column X] -> [process] -> [fill column Y if true] ...

赞:

[index columnX columnY columnZ]
[0        A       0      NULL ]
[1        A       1      NULL ]
[2        B       2     "..." ]
[3        B       3     "..." ]
[4        B       4     "..." ]

3 个答案:

答案 0 :(得分:1)

我不确定是否确切理解,但我认为这可能是解决方案:

list = [1, 2, 3, 4, 5, 6]
d = {'columnX':[],'columnY':[]}
for value in list:
    if value > 3:
       d['columnX'].append("A")
    else:
       d['columnX'].append("B")
    d['columnY'].append(value-1)
df = pd.DataFrame(d)

对于第二个问题,只需添加另一个条件

list = [1, 2, 3, 4, 5, 6]
d = {'columnX':[],'columnY':[], 'columnZ':[]}
for value in list:
    if value > 3:
       d['columnX'].append("A")
    else:
       d['columnX'].append("B")
    if condition:
        d['columnZ'].append(xxx)
    else:
        d['columnZ'].append(None)
df = pd.DataFrame(d)

答案 1 :(得分:0)

根据您提供的示例,我对代码进行了一些更改以实现您共享的结果:

list = [1, 2, 3, 4, 5, 6]
df = pd.DataFrame(columns=['columnX','columnY', 'columnZ'])
for index, value in enumerate(list):
    temp = []
    if value > 3:
       #df['columnX']="A"
       temp.append("A")
       temp.append(None)
    else:
       #df['columnX']="B"
       temp.append("B")
       temp.append("Another value") # or you can add any conditions
    #df['columnY']=value-1
    temp.append(value-1)
    df.loc[index] = temp

print(df)

这将产生结果:

  columnX        columnY  columnZ
0       B  Another value      0.0
1       B  Another value      1.0
2       B  Another value      2.0
3       A           None      3.0
4       A           None      4.0
5       A           None      5.0

df.index打印为:Int64Index([0,1,2,3,4,5],dtype ='int64')

答案 2 :(得分:0)

您可以根据输入列表的大小,使用 index 准备/初始化数据框,然后从file = open(filepath) list = file.readlines() for i in list: pyperclip.copy(i) #rest of script... 例程获取 power

np.where