在python中使用数据帧:
我试图从数据帧中获取以下数据,无法修复循环以获得正确的结果。你知道吗
数据集的小样本:
BERTH FROM_BERTH BI
29 H2 0
29 09 0
29 J5 0
C5 NaN 1
J4 NaN 1
J2 NaN 1
下面是数据集的一部分(我需要使用的相关列),下面是我希望输出的样子:
29, H2, 09, J5, C5, J4, J2
也就是说:如果BI为0,我需要BERTH的值,然后是from\u BERTH的值,直到BI变为1,然后返回给我BERTH(直到BI再次变为1,依此类推)。你知道吗
以下是我尝试过的代码及其结果:
test_berth2 = []
for i in range(0,6):
if df3_test.loc[i,'BI'] == 0 & df3_test.iloc[i,21] != df3.iloc[i-1,21]:
test_berth2.append(df3_test.loc[i,'BERTH'])
test_berth2.append(df3_test.loc[i,'FROM_BERTH'])
elif df3_test.loc[i,'BI'] == 0 & df3_test.iloc[i,21] == df3.iloc[i+1,21]:
test_berth2.append(df3_test.loc[i,'FROM_BERTH'])
else :
test_berth2.append(df3_test.loc[i,'BERTH'])
test_berth2
结果:
['29', 'H2', '29', '09', '29', 'J5', 'C5', 'J4', 'J2']
回路2:
for i in range(0,6):
if df3_test.iloc[i,21] == 0:
print (df3_test.loc[i,'BERTH'])
while df3_test.iloc[i,21] == 0:
print (df3_test.loc[i,'FROM_BERTH'])
i = i+1
else:
print (df3_test.loc[i,'BERTH'],'1')
结果:
29, H2, 09, J5, 29, 09, J5, 29, J5, C5 1, J4 1, J2 1
PS:第21列的iloc是'BI'btw
我认为,一种方法是使用熊猫群比:
输出:
注意:
cumsum
是诀窍。它将允许创建一个基于BI中零的组,并为BI创建一个包含1条记录的组,这些记录等于任何非零的记录。然后,我们从BERTH得到第一个值,并从该组中得到所有的BERTH值。你知道吗编辑评论中的问题:
输出:
相关问题 更多 >
编程相关推荐