首页 > 解决方案 > Can DataFrame use np.select after two DataFrame combined?

问题描述

I can use np.select to insert a new column and set the value for one dataFrame.

But when I combined both dataFrame. The np.select does not work. Seems index error.

import pandas as pd
import numpy as np

df = pd.DataFrame([[3, 2, 1],[4, 5, 6]], columns=['col1','col2','col3'], index=['a','b'])
df2 = pd.DataFrame([[14, 15, 16],[17, 16, 15]], columns=['col1','col2','col3'], index=['c','e'])

count = df.append(df2)

print(count)




conditions = [
    (df["col1"] >= df["col2"]) & (df["col2"] >= df["col3"]),
]

choices = [100]

count["col4"] = np.select(conditions,choices, default='WHAT')
count

This is success
enter image description here

This is error after combine, error is :

ValueError: Length of values does not match length of index

enter image description here

标签: pythonpandas

解决方案


I think there is a typo in your code when it comes to count vs df. The following code just works fine.

import pandas as pd
import numpy as np

df = pd.DataFrame([[3, 2, 1],[4, 5, 6]], columns=['col1','col2','col3'], index=['a','b'])
df2 = pd.DataFrame([[14, 15, 16],[17, 16, 15]], columns=['col1','col2','col3'], index=['c','e'])

count = df.append(df2)


print(count)




conditions = [
    (count["col1"] >= count["col2"]) & (count["col2"] >= count["col3"]),
]
print(conditions)
choices = [100]

count["col4"] = np.select(conditions,choices, default='WHAT')
count

推荐阅读