我想定义一个列,如果另一列中包含的日期等于某个数据,我想在其中放置1或0。
DF[['column_i']]= 0 if DF[['column_j']] == '1983-11-08' else 1
似乎操作未单义定义,因为它返回错误:
Traceback (most recent call last): File "<pyshell#150>", line 1, in <module> Accounts_conFatt_SR_TRAFF[['Churn']]= 0 if Accounts_conFatt_SR_TRAFF[['Deactive Date']] == '1970-01-01' else 1 File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\generic.py", line 887, in __nonzero__ .format(self.__class__.__name__)) ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这是一个错误还是我做错了什么?
ps =类型没有问题:我已经尝试在单个DF [&#39;列&#39;] [0]值上执行if,但效果很好。
答案 0 :(得分:2)
您可以使用numpy.where
声明执行此类操作:
df['column_i'] = np.where(df['column_j'] == '1983-11-08', 0, 1)
答案 1 :(得分:1)
在这种特殊情况下(当你需要零或一个时)你可以这样做:
DF[['column_i']] = (DF[['column_j']] != '1983-11-08').astype(np.int8)
使用True
和False
值在Python内部表示为1
和0
的事实。
PS但来自@reptilicus的解决方案更为通用,因为您可以将任何值放在不仅为零或一个。