我有一个很长的pd数据帧mydf
和一维的ndarray,列名和类型相同,创建如下:
Row = pd.Series(0, mydf.columns)
Row = mydf.iloc[index]
我想将Row
添加到数据框i
中间的定义位置mydf
。我使用以下内容:
mydf = pd.concat([mydf.head(idx), Row , mydf.tail(len(mydf) - idx)])
我总是收到以下警告,然后代码没有运行:
'>' not supported between instances of 'int' and 'str', sort order is undefined for incomparable objects
result = result.union(other)
如果我的Row
具有与数据帧完全相同的格式,错误怎么会出现?如何解决这个问题?
THX。
答案 0 :(得分:0)
你得到的只是一个警告,Row开始以不正确的方式连接到数据帧。
Row是一个系列,您尝试在两个数据帧之间连接系列。 Series有索引dtype对象(字符串),df有索引dtype int。索引通常在连接时进行排序。现在该函数不知道如何对混合dtype索引进行排序。所以你得到了警告。
所以最好将Row转换为数据帧以避免此错误,即
ndf = pd.concat([mydf.head(index), pd.DataFrame(Row).T, mydf.tail(len(mydf) - index)])
例如,考虑数据帧 mydf
id offset code 0 1 3 21 1 1 3 24 2 1 5 21
index= 2
Row = mydf.iloc[index]
df = pd.concat([mydf.head(index), Row , mydf.tail(len(mydf) - index)])
/python3.5/site-packages/pandas/core/indexes/api.py:77: RuntimeWarning: unorderable types: str() < int(), sort order is undefined for incomparable objects
result = result.union(other)
id offset code 0 0 1.0 3.0 21.0 NaN 1 1.0 3.0 24.0 NaN id NaN NaN NaN 1.0 offset NaN NaN NaN 5.0 code NaN NaN NaN 21.0 2 1.0 5.0 21.0 NaN
df = pd.concat([mydf.head(index), pd.DataFrame(Row).T , mydf.tail(len(mydf) - index)])
id offset code 0 1 3 21 1 1 3 24 2 1 5 21 2 1 5 21