我想创建一个新列“Day2”,它采用名为“Days”的列的第二位数字,因此如果我们的天等于 35,我们将在“Day2”中采用数字 5,我尝试了这个,但是它不起作用:
DF["Day2"] = DF["Days"].where(
DF["Days"] < 10,
(DF["Days"] / 10 % 10).astype(int),
)
似乎取了第一个数字,但没有取第二个数字,有人可以帮忙吗?
我自己尝试过,并想出了一个非常简单的解决方案:
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的结果。