python - Python在DataFrame中添加和排序新行
问题描述
我想在数据框中添加一行,我想在插入后对数据框进行排序。
我已经添加了行并重置了数据框索引,但徒劳无功。
我该如何解决这个问题?提前感谢您的建议。
import pandas as pd
def diff(first, second):
second = set(second)
return [item for item in first if item not in second]
df = pd.DataFrame({"Date":[
'2015/12/25',
'2015/12/26',
'2015/12/27',
'2015/12/28',
'2015/12/29',
'2015/12/30',
'2015/12/31'
],
"X":["X","A","A","X","","","X"]
})
df2 = pd.DataFrame({"Date":[
'2015/12/25',
'2015/12/28',
'2015/12/29',
'2015/12/30',
'2015/12/31'
],
"X":["X","A","A","X",""]
})
diff_df = pd.merge(df, df2, how='outer', indicator='Exist')
diff_df = diff_df.loc[diff_df['Exist'] != 'both']
prevDay = int(diff_df['Date'].values[0].rsplit('/', 1)[-1]) - 1
prevDate = diff_df['Date'].values[0].rsplit('/', 1)[-2] + "/" + str(prevDay)
df3 = pd.DataFrame({"Date":[diff_df['Date'].values[0]], "X":["Q"]})
df2 = df2.sort_index(axis=1, ascending=True)
df2 = df2.append(df3)
df2 = df2.reset_index(drop=True)
print(df2)
实际输出:
0 2015/12/25 X
1 2015/12/28 A
2 2015/12/29 A
3 2015/12/30 X
4 2015/12/31
5 2015/12/26 Q
预期输出:
0 2015/12/25 X
1 2015/12/26 Q
2 2015/12/28 A
3 2015/12/29 A
4 2015/12/30 X
5 2015/12/31
解决方案
我认为要searchsorted
插入的返回位置是熊猫。
为每个插入排序值听起来很糟糕。但是,如果您只需要在所有插入后排序一次,那就没问题了。
推荐阅读
- node.js - 更新对象数组中的几个对象猫鼬
- php - Laravel如何约会减去日期并获得分钟
- swift - 使用未声明的类型“MainGameScreenViewController”
- java - Android Firebase,数据库中特定值的getKey
- mysql - 如何索引 MySQL InnoDB 表以使用 select ... where key in ( some values here) 进行查询?
- git - Git子模块克隆到错误的路径
- java - Testng XmlSuite.getAllParameters() 抛出 NullPointerException
- php - Laravel 5.6 - 工厂关系无限播种
- java - 不要从 http 重定向到 https
- json - node.js - 从变量中获取 JSON 键的名称