使用其他列的模数在数据框中创建新列

问题描述 投票:0回答:1

我想创建一个新列“Day2”,它采用名为“Days”的列的第二位数字,因此如果我们的天等于 35,我们将在“Day2”中采用数字 5,我尝试了这个,但是它不起作用:

DF["Day2"] = DF["Days"].where(
            DF["Days"] < 10,
            (DF["Days"] / 10 % 10).astype(int),
        )

似乎取了第一个数字,但没有取第二个数字,有人可以帮忙吗?

python pandas dataframe
1个回答
2
投票

我自己尝试过,并想出了一个非常简单的解决方案:

import pandas as pd

data = [10,11,35,45,65]

df = pd.DataFrame(data, columns=['Day1'])

df['Day2'] = df['Day1'] % 10

df

结果

       Day1 Day2
   0    10  0
   1    11  1
   2    35  5
   3    45  5
   4    65  5

按照您的方法,您还可以这样做:

df['Day2'] = [df["Day1"].where(
        df["Day1"] < 10,
        (df["Day1"] % 10).astype(int),
    )

您需要删除 / 10。它总是给出十进制数除以 % 10 总是返回完全相同的十进制数,因为它总是小于 10。

更新:

df['Day2'] = df["Day1"].mod(10)

产生相同且更加Pythonic的结果。

© www.soinside.com 2019 - 2024. All rights reserved.