【问题标题】:Concatenate two rows based on a condition using for loop使用 for 循环根据条件连接两行
【发布时间】:2019-11-15 02:22:43
【问题描述】:

我正在尝试根据条件将字符串连接成两行。我使用 for 循环来合并值。

图像中给出了输入数据集和输出列

我使用 for 循环连接行中的值

for i in range(len(Data)):
    j=i+1
    while j < len(Data):
       if(Data['key (Sum(col1to6))'][i]!=Data['key (Sum(col1to6))'][j]):
           break;
    if (Data['key (Sum(col1to6))'][i]==Data['key (Sum(col1to6))'][j]) and     Data['value'][i]<10:
         Data['ouput_code'][i]=Data['Col6'][i]+Data['Col6'][j]
else: 
   Data['ouput_code']=Data['Col6']
   j=j+1
   print ('last',i)

在我的最终输出中,所有行都被合并了。

【问题讨论】:

  • 拜托,你能编辑你的代码缩进吗?另外,您能否以文本格式提供数据。没有人想从图片中输入数据。谢谢!

标签: python pandas for-loop while-loop pandas-groupby


【解决方案1】:

虽然我想让您知道我还没有完全理解您的问题,但是查看代码时我发现以下错误可能会导致您出现问题。

for i in range(len(Data)):
  j=i+1
  while j < len(Data):
    if(Data['key (Sum(col1to6))'][i]!=Data['key (Sum(col1to6))'][j]):
      break;
    if (Data['key (Sum(col1to6))'][i]==Data['key (Sum(col1to6))'][j]) and Data['value'][i]<10:
      Data['ouput_code'][i]=Data['Col6'][i]+Data['Col6'][j]
    else: 
      #Data['ouput_code']=Data['Col6'] # <== Here you are over writing the whole ouput_code column 
      Data['ouput_code'][i]=Data['Col6'][i] # <== I believe what you want to do is update just one entry 
    j=j+1
print ('last',i)

这是你想做的吗?

谢谢

【讨论】:

  • 是的。正确的。我在代码中添加了两行。谢谢............ Data['ouput_code'][i]=Data['Col6'][i] Data['ouput_code'][j]=Data['Col6 '][j]........ if (Data['key (Sum(col1to6))'][i]==Data['key (Sum(col1to6))'][j])和 (Data['value'][i]
  • 这段代码可以用np.where来写吗,这样可以减少处理时间。
猜你喜欢
  • 2019-02-23
  • 2016-08-19
  • 2020-06-05
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多