如何将int64和对象类型相加?

时间:2015-07-23 11:22:30

标签: python pandas

我有以下数据框:

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

1 个答案:

答案 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)