我正在从API调用中将CSV文件读取到带有熊猫的数据帧中,以进行一些数据操作。
当前,我收到以下答复:
n [78]: dfname
Out[78]:
productID amountInStock index index_col
7 1.0 NaN 1 7
19 4.0 NaN 2 19
20 1.0 NaN 3 20
22 2.0 NaN 4 22
然后我调用dfname.reset_index()创建一个更好的索引:
dfname.reset_index()
Out[80]:
level_0 productID amountInStock index index_col
0 7 1.0 NaN 1 7
1 19 4.0 NaN 2 19
2 20 1.0 NaN 3 20
3 22 2.0 NaN 4 22
但是问题是'productID'系列有两列,我不知道如何拆分它们!
dfname.productID
Out[82]:
7 1.0
19 4.0
20 1.0
22 2.0
我想要的是dfname.productID返回:
dfname.productID
Out[82]:
7
19
20
22
和productID中当前存在的其他数字应分配给“ stockqty”。
如何拆分此字段,使其返回两列而不是一列?我尝试.str.split()无济于事。
对象的属性为名称:productID,长度:2102,dtype:float64
答案 0 :(得分:2)
但是问题是'productID'系列有两列,而我 无法解决如何拆分它们!
其中存在误解。尽管print
告诉您,但您没有2列。您有一列带有索引的列。正是这样定义pd.Series
对象的方式。
我想要的是dfname.productID返回:
如上所述,这是不可能的。每个系列都有一个索引。这是不能商量的。
如何拆分此字段,使其返回两列而不是 一?我尝试.str.split()无济于事。
这不是前进的道路。特别要注意的是,pd.Series.str.split
用于序列中的分割字符串。您这里没有字符串。而是使用reset_index
并重命名您的列。或者在reset_index
前命名您的索引。后一种选择对我来说似乎更干净:
df.index.name = 'stockqty'
df = df.reset_index()
print(df)
stockqty productID amountInStock index index_col
0 7 1.0 NaN 1 7
1 19 4.0 NaN 2 19
2 20 1.0 NaN 3 20
3 22 2.0 NaN 4 22
答案 1 :(得分:0)
我在解析csv时通过指定分隔符来解决:
df = pd.read_csv(link, encoding='ISO-8859-1', sep=', ', engine='python')