所以我有一个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 "..." ]
答案 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