如果另一列中存在任何值> 0,则需要为数据框分配值

时间:2019-06-29 19:33:26

标签: python pandas dataframe for-loop

我正在使用交易数据库查询集,但无法提取特定的付款日期,因此我试图用python编写代码来为我分配日期。我的第一个想法是在excel中执行此操作,但是数据集是800,000+行X 100+列,因此以任何其他方式执行此操作都不切实际。数据集在付款列的某些行中具有值,因此我需要添加一个日期列,该日期列仅在包含付款金额的行中具有日期。

我已经创建了所有列来存储日期,我的想法是遍历行并分配一个日期,如果该行包含的值大于零(因为列中有0以及NULL)值)。

df['Payment Date] = ''

for value in df:
    if value > 0 :
        df['Payment Date'] = '06/01/2019'

我希望输出中的日期分配给付款日期列中具有实际值的行。

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,您正在尝试(1)标识数据框中具有大于零值的行,并且(2)为所有这些行的新列分配特定日期。

首先,为了重现性和清晰度,让我们生成一些代表您的数据集的随机数据:

import pandas as pd

# Generate a random 5x4 Dataframe
df = pd.DataFrame(np.random.randn(5,4), columns=list('ABCD'))

# Set many of the values to zero 
df[df > 0] = 0

现在,我们要创建一个新列来存储所需的日期:

df['Payment Date'] = ''

最后,将该列设置为所有包含大于零值的所有行的期望日期(请注意,这要求所有行的总和(跳过N / As)大于零,这是经过测试的条件下方):

row_inds = df.sum(axis=1, skipna=True)>0
df.loc[row_inds, 'Payment Date'] = '06/01/2019'

哪个可以给您想要的结果。