我有以下数据框:
Setup Setup1 Setup2
720 60 540
360 60 180
300 0 0
1,8 60 60
600 60 540
Setup = object
Setup1 = int64
Setup2 = int64
我想将所有设置时间总结为一个度量。这就是我的工作:
totalduration2 = (np.sum(dfgroup2[['Setup1', 'Setup2','Setup']].values))
然而,它会导致NaN值,这可能是由于int64和对象类型。我试着改变它:
df2['SetupDuration1'] = df2['SetupDuration1'].convert_objects(convert_numeric=True)
df2['SetupDuration2'] = df2['SetupDuration2'].convert_objects(convert_numeric=True)
df2['Duration'] = df2['Duration'].convert_objects(convert_numeric=True)
现在解决了点而不是逗号的问题,但是1.8意味着1800.那么我怎么能机会出现包含a的值。因为1000?
IF cell contains a dot . THEN
value*1000
答案 0 :(得分:2)
首先,您需要将NaN
值更改为正确的浮点数:
df['Setup'] = df['Setup'].apply(lambda x: float(str(x).replace(',', '.')) if ',' in str(x) else float(x))
或者更动态地为所有列添加:
for col in df.columns:
df[col] = df[col].apply(lambda x: float(str(x).replace(',', '.')) if ',' in str(x) and 'Setup' in col else float(x))
然后您可以汇总所有Setup
列:
setup_sum = sum(sum(df[col].values) for col in df.columns if 'Setup' in col)