2024-10-01 11:38:14 发布
网友
我有一个大的.csv文件,它不断地被实时更新,几千行显示如下:
.csv
time1,stockA,bid,1 time2,stockA,ask,1.1 time3,stockB,ask,2.1 time4,stockB,bid,2.0 time5,stockA,bid,1.1 time6,stockA,ask,1.2
将其读入dataframe的最快方法是什么:
dataframe
感谢任何帮助
我想这里有一个更简洁的方法。在
df = pd.read_csv('prices.csv', header=None, names=['time', 'stock', 'type', 'prices'], index_col=['time', 'stock', 'type']) In [1062]: df Out[1062]: prices time stock type time1 stockA bid 1.0 time2 stockA ask 1.1 time3 stockB ask 2.1 time4 stockB bid 2.0 time5 stockA bid 1.1 time6 stockA ask 1.2 time7 stockA high1.5 time8 stockA low 0.5
我认为数据帧应该是这样的。 那就去吧
您可以使用df.fillna将您喜欢的任何内容填充到nan中。一般来说,将列值转换为列标题称为透视。.unstack旋转多索引的一个级别。您也可以检查.pivot。在
df.fillna
.unstack
.pivot
您可以使用read_csv并指定header=None,并将列名作为列表传递:
read_csv
header=None
In [124]: t="""time1,stockA,bid,1 time2,stockA,ask,1.1 time3,stockB,ask,2.1 time4,stockB,bid,2.0""" df = pd.read_csv(io.StringIO(t), header=None, names=['time', 'stock', 'bid', 'ask']) df Out[124]: time stock bid ask 0 time1 stockA bid 1.0 1 time2 stockA ask 1.1 2 time3 stockB ask 2.1 3 time4 stockB bid 2.0
您必须将bid列重新编码为1或2:
编辑
根据您更新的样本数据和期望的输出,以下工作:
In [29]: t="""time1,stockA,bid,1 time2,stockA,ask,1.1 time3,stockB,ask,2.1 time4,stockB,bid,2.0 time5,stockA,bid,1.1 time6,stockA,ask,1.2""" df = pd.read_csv(io.StringIO(t), header=None, names=['time', 'stock', 'bid', 'ask']) df Out[29]: time stock bid ask 0 time1 stockA bid 1.0 1 time2 stockA ask 1.1 2 time3 stockB ask 2.1 3 time4 stockB bid 2.0 4 time5 stockA bid 1.1 5 time6 stockA ask 1.2 In [30]: df.loc[df['bid'] == 'bid', 'bid'] = df['ask'] df.loc[df['bid'] != 'ask', 'ask'] = '' df.loc[df['bid'] == 'ask','bid'] = '' df Out[30]: time stock bid ask 0 time1 stockA 1 1 time2 stockA 1.1 2 time3 stockB 2.1 3 time4 stockB 2 4 time5 stockA 1.1 5 time6 stockA 1.2
我想这里有一个更简洁的方法。在
我认为数据帧应该是这样的。 那就去吧
^{pr2}$您可以使用
df.fillna
将您喜欢的任何内容填充到nan中。一般来说,将列值转换为列标题称为透视。.unstack
旋转多索引的一个级别。您也可以检查.pivot
。在您可以使用
read_csv
并指定header=None
,并将列名作为列表传递:您必须将bid列重新编码为1或2:
^{pr2}$编辑
根据您更新的样本数据和期望的输出,以下工作:
相关问题 更多 >
编程相关推荐