使用列表理解自动填充具有特定数据类型的列表
Using list comprehension to automatically populate a list with specific data type
我在 CSV 文件中得到了一个简单的数据。此数据具有分类列和连续列。这就是我将它们分开的方式:
df = pd.read_csv('data.csv')
categorical_columns = ['order_id', 'start_state_abr', 'end_state_abr', 'start_city', 'end_city', 'start_zip', 'end_zip']
continuous_columns = ['total_volume_inches3', 'total_distance_miles', 'total_weight_lbs']
这太手动了。每次有新列时,它都要求程序员读取 CSV 文件。有没有办法使用列表理解来填充列表 categorical_columns
和 continuous_columns
?
你能给我看看 CSV 文件吗?
我想你可以通过眼睛找出列的类型,但不知道如何通过自动功能挑选它们!解决方法如下!
# distinguish the categorical_columns,numerical_columns:
# 1.use df.info() to check out which columns are 'object'
df.info()
# 2.then use df.select_dtypes(excluede=['object']).columns to get numerical columns
numerical_col=list(tf.select_dtypes(exclude=['object']).columns)
categorical_col = []
for i in train.columns:
if i not in numerical_col:
categorical_col.append(i)
categorical_col
# 3.Furthermore,distinguish the serial columns and noserial columns:
numerical_serial_col=[]
numerical_noserial_col=[]
for i in numerical_col:
if train[i].nunique()<=10:
numerical_noserial_col.append(i)
else:
numerical_serial_col.append(i)
numerical_serial_col,numerical_noserial_col
[这是我在stack-overflow的第一个回答,不规范的回答格式还请见谅!]
我在 CSV 文件中得到了一个简单的数据。此数据具有分类列和连续列。这就是我将它们分开的方式:
df = pd.read_csv('data.csv')
categorical_columns = ['order_id', 'start_state_abr', 'end_state_abr', 'start_city', 'end_city', 'start_zip', 'end_zip']
continuous_columns = ['total_volume_inches3', 'total_distance_miles', 'total_weight_lbs']
这太手动了。每次有新列时,它都要求程序员读取 CSV 文件。有没有办法使用列表理解来填充列表 categorical_columns
和 continuous_columns
?
你能给我看看 CSV 文件吗? 我想你可以通过眼睛找出列的类型,但不知道如何通过自动功能挑选它们!解决方法如下!
# distinguish the categorical_columns,numerical_columns:
# 1.use df.info() to check out which columns are 'object'
df.info()
# 2.then use df.select_dtypes(excluede=['object']).columns to get numerical columns
numerical_col=list(tf.select_dtypes(exclude=['object']).columns)
categorical_col = []
for i in train.columns:
if i not in numerical_col:
categorical_col.append(i)
categorical_col
# 3.Furthermore,distinguish the serial columns and noserial columns:
numerical_serial_col=[]
numerical_noserial_col=[]
for i in numerical_col:
if train[i].nunique()<=10:
numerical_noserial_col.append(i)
else:
numerical_serial_col.append(i)
numerical_serial_col,numerical_noserial_col
[这是我在stack-overflow的第一个回答,不规范的回答格式还请见谅!]