我使用熊猫导入CSV文件,如何使用python熊猫填充从csv文件多行阵列
CSV列标题 - 年,模型,修剪,结果
从进来的值csv文件如下 -
Year | Model | Trim | Result
2012 | Camry | SR5 | 1
2014 | Tacoma | SR5 | 1
2014 | Camry | XLE | 0
etc..
有包含超过200个独特的模型数据集2500+行。
然后将所有数值转换为数值以进行分析。
这里的输入是CSV文件的前3列和输出第四结果列
这里是我的脚本:
import pandas as pd
inmport numpy as np
c1 = []
c2 = []
c3 = []
input = []
output = []
# read in the csv file containing 4 columns
df = pd.read_csv('success.csv')
df.convert_objects(convert_numeric=True)
df.fillna(0, inplace=True)
# convert string values to numerical values
def handle_non_numerical_data(df):
columns = df.columns.values
for column in columns:
text_digit_vals = {}
def convert_to_int(val):
return text_digit_vals[val]
if df[column].dtype != np.int64 and df[column].dtype != np.float64:
column_contents = df[column].values.tolist()
unique_elements = set(column_contents)
x = 0
for unique in unique_elements:
if unique not in text_digit_vals:
text_digit_vals[unique] = x
x+=1
df[column] = list(map(convert_to_int, df[column]))
return df
df = handle_non_numerical_data(df)
# extract each column to insert into input array later
c1.append(df['Year'])
c2.append(df['Model'])
c3.append(df['Trim'])
#create input array containg the first 3 rows of the csv file
input = np.stack_column(c1,c2,c3)
output.append(df['Result'])
这工作得很好,除了追加仅节选1个值,我会使用扩展,因为它似乎将它附加到数组的末尾?
UPDATE
从本质上讲这一切的伟大工程,我的问题是创建输入数组,我想该阵列由3列的 - 年,模型,修剪。
input = ([['Year'], ['Model'], ['Trim']],[['Year'], ['Model'], ['Trim']]...)
我只能似乎加上另一个的上面一个价值,而不是让他们序列..
我现在得到 -
input = ([['Year'], ['Year'], ['Year']].., [['Model'], ['Model'], ['Model']]..[['Trim'], ['Trim'], ['Trim']]...)
我竭力要理解这个问题。您能否重新解释,或者添加一个当前和预期行为的例子? – Marat
目前还不清楚你在做什么,因为我们对你的csv一无所知。你应该尝试举一个输入和预期输出的例子。在这种情况下,即为什么'pd.read_csv'的结果是不可接受的。我怀疑,无论你想要完成什么,都可以以更直接的方式完成。 –
对不起,我试图更新这个问题,以更好地解释我的问题,基本上我不能将3个数组顺序排列成一个数组而不堆叠它们 –