我正在尝试读取这样的csv行:
order
如果我现在用test.values打印出这些值,我会得到这个数组:
headers = ['col1', 'col2', 'col3', 'col4','col5','col6']
dtypes = {'col1': 'int', 'col2': 'str', 'col3': 'str', 'col4': 'str','col5': 'str','col6': 'int'}
test = pd.read_csv("solution.csv", sep=',', header=None, names=headers, dtype=dtypes, date_parser = pd.to_datetime)
但是我需要将“ col4”作为datetime.date,因为我想将其与sql查询进行比较。 有一种简单的方法(最好是在阅读csv时)来做到这一点吗? 我可以将它作为时间戳取回,但对我来说这是没有用的,因为sql查询返回了datetime.date。
我正在寻找的解决方案应如下所示:
array([[107, 'Berg Live', 'Berg', '2017-01-08','Concert', 7]], dtype=object)
答案 0 :(得分:0)
在我的末端进行本地测试。如果要在读取CSV本身的同时将其作为日期时间读取,则可以使用parse_dates:
因此您可以这样做:
df = pd.read_csv("solution.csv", sep=',', header = None, names = headers, dtype = dtypes, parse_dates = ['col4'])
答案 1 :(得分:0)
>>> col_names = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']
>>> dtypes = {'col1': int, 'col2': str, 'col3': str, 'col5': str, 'col6': int}
>>> date_cols = ['col4']
>>> df = pd.read_csv('solution.csv', names=col_names, parse_dates=date_cols)
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 6 columns):
col1 1 non-null int64
col2 1 non-null object
col3 1 non-null object
col4 1 non-null datetime64[ns]
col5 1 non-null object
col6 1 non-null int64
dtypes: datetime64[ns](1), int64(2), object(3)
memory usage: 128.0+ bytes
None
>>> df.head()
col1 col2 col3 col4 col5 col6
0 107 Berg Live Berg 2017-01-08 Concert 7
您可以使用dt
访问器对获取DateTime属性的TimeStamp对象进行操作。
>>> df['col4'].dt
<pandas.core.indexes.accessors.DatetimeProperties object at 0x114d02518>
>>> df['col4'].dt.day_name()
0 Sunday
Name: col4, dtype: object
答案 2 :(得分:0)
您可以这样做:
smallMsms.apply(lambda row:
createRowMQ(row['peptide seq'],row['protein Entry'],row['mass error ppm'],row['evidenceID'],
row['peptide modification'],row['Reverse'],row['Matches'],row['Intensities'],
row['Mass Deviations [ppm]'],row['Intensity L'],row['Intensity M'],row['Intensity H']), axis=1)