Python ValueError:。使用a.empty、a.bool()、a.item()、a.any()或a.all()。调用函数时
我使用CSV文件作为输入,并生成JSON格式的文件以输入kafka主题Python ValueError:。使用a.empty、a.bool()、a.item()、a.any()或a.all()。调用函数时,python,pandas,dataframe,Python,Pandas,Dataframe,我使用CSV文件作为输入,并生成JSON格式的文件以输入kafka主题 df = pd.read_csv(csv_file, delimiter=",", dtype={'E': 'S10', 'C': 'S10', 'Date': 'S10', 'TimeCode': 'S10', 'Workrule': 'S10'}) common.time_calc(df) #time_calc is the func
df = pd.read_csv(csv_file, delimiter=",",
dtype={'E': 'S10', 'C': 'S10', 'Date': 'S10', 'TimeCode': 'S10',
'Workrule': 'S10'})
common.time_calc(df) #time_calc is the function from a
df = df.drop(['Workrule'], axis=1)
关于我的函数
def time_calc(df_entry):
if (df_entry['TimeCode'] == 'R') and (df_entry['Workrule'] == 'C'):
df_entry['TimeCode'] = 'A'
if df_entry['TimeCode'] in ['O', 'L']:
df_entry['TimeCode'] = 'O'
我越来越
ValueError:序列的真值不明确。使用a.empty,
a、 bool()、a.item()、a.any()或a.all()
我已经尝试过修改代码,如下所示
if (df_entry['TimeCode'] == 'R') & (df_entry['Workrule'] == 'C'):
df_entry['TimeCode'] = 'A'
但仍然会得到相同的错误
添加了以下内容,现在可以发布了。谢谢
json_data = df.to_json(orient='records')
json_input = '{"value":' + json_data + '}'
decodedJson = json.loads(json_input)
for entry in decodedJson['value']:
common.time_calc(entry)
del entry['Workrule']
函数
time\u calc
将DataFrame
作为参数。在部分df_条目['TimeCode']='R'
中,当您将整个列与标量值进行比较时,您实际上计算了一个序列
当您使用逻辑和
进行此操作时,python会尝试计算一个系列的布尔值
等价物,这会引发异常。实际上,您要做的是使用向量运算或在行上循环
固定代码的示例可以是(未测试):
您将整个列与单个值进行比较
df_条目['TimeCode']=='R'
。您需要逐行迭代以比较单列值,或者更好地使用np.where
def time_calc(df_entry):
df_entry['TimeCode'] = np.where((df_entry['TimeCode'] == 'R') and (df_entry['Workrule'] == 'C'), 'A', df_entry['TimeCode'])
df_entry['TimeCode'] = np.where(df_entry['TimeCode'] in ['O','L'], 'O', df_entry['TimeCode'])
是的,我检查了现有的问题。这就是为什么我在postingOK之前首先尝试布尔运算符,只是检查一下,在你的问题中没有提到它。我尝试过将代码修改为。。。。。
def time_calc(df_entry):
df_entry['TimeCode'] = np.where((df_entry['TimeCode'] == 'R') and (df_entry['Workrule'] == 'C'), 'A', df_entry['TimeCode'])
df_entry['TimeCode'] = np.where(df_entry['TimeCode'] in ['O','L'], 'O', df_entry['TimeCode'])