【问题标题】:Python-Pandas While loopPython-Pandas While 循环
【发布时间】:2018-04-09 20:11:53
【问题描述】:

我在使用 DataFrame 和 while 循环时遇到了一些问题:

A     B
5     10
5     10
10    5

我正在尝试一个 while 循环:

while (Column A < Column B):
    Column A = Column A + (Column B / 2)
    Column B = Column B / 2

任何想法如何做到这一点。

【问题讨论】:

  • 最好先尝试编写一些代码来尝试解决该问题,然后将代码发布到此处以便我们发表评论。
  • 当你在它的时候发布预期的答案:)

标签: python pandas


【解决方案1】:

试试下面。下次尝试解决它而不是直接问它。你会学到更多:)谢谢。

import pandas as pd
d = {'A': [5,5,10], 'B': [10,10,5]}
df = pd.DataFrame(data=d)
df
Out[]:
A   B
0   5  10
1   5  10
2  10   5

rows = df.shape[0]
i = 0
while i < rows and df.loc[i,'A'] < df.loc[i,'B']:
    df.loc[i,'A'] += df.loc[i,'B']/2
    df.loc[i,'B'] = df.loc[i,'B']/2
    i += 1
df
Out[]:
A   B
0   10  5
1   10  5
2   10  5

【讨论】:

    【解决方案2】:

    您可以将此计算向量化以避免显式循环:

    mask = df['A'] < df['B']
    
    df.loc[mask, 'A'] = df['A'] + df['B'] / 2
    df.loc[mask, 'B'] = df['B'] / 2
    
    print(df)
    
    #       A    B
    # 0  10.0  5.0
    # 1  10.0  5.0
    # 2  10.0  5.0
    

    【讨论】:

      猜你喜欢
      • 2014-11-02
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2012-09-19
      相关资源
      最近更新 更多