python - 根据列索引添加行
问题描述
我有一个包含以下列的数据框:
id index1 index2 value
DivA 1 4 3
DivA 3 6 4
DivB 1 3 5
DivB 5 7 3
在另一个数据框上,我有以下内容:
id index
DivA 1
DivA 2
...
DivA 10
DivB 1
...
最终结果:df2:
id index value
DivA 1 3
DivA 2 nan (because no value in df1)
DivA 3 4
DivA 4 3
...
DivA 10 nan (because no value in df1)
DivB 1 5
...
我想知道我是否可以以组合“index1”和“index2”的方式向第二个df添加一个新列“value”,如果没有值,第二个df中的“value”可以有“nan”在第一个数据框“值”中?
谢谢你的帮助 !
解决方案
#pd.melt first dataframe
df3=pd.melt(df, id_vars=['id','value'], value_vars=['index1', 'index2'], value_name='index').drop(columns=['variable'])
#pd.concat second dataframe to the pd.met result, sort-values and drop duplicates in index
(pd.concat([df3, df1], ignore_index=True).sort_values(by=['id','index'])).drop_duplicates(subset=['index'],keep='first')
id value index
0 DivA 3.0 1
9 DivA NaN 2
1 DivA 4.0 3
4 DivA 3.0 4
5 DivA 4.0 6
10 DivA NaN 10
3 DivB 3.0 5
7 DivB 3.0 7
推荐阅读
- javascript - 返回 NaN 的赋值运算符
- javascript - 如何将数字解析为文本
- c++ - 在 C++ 中使用 fread() 解释这个结果的原因是什么?
- mysql - Mysql ONLY_FULL_GROUP_BY 模式问题 - 为每个专辑选择单个图像 URL(任何)
- python - copying discrete events from one dataframe to another by comparing timestamps
- php - Dynamic routing in codeigniter
- arrays - Mapping data to Observable Array 1 based on field value from Observable Array 2
- javascript - 获取元素的所有数据属性并将它们存储在 JSON 中
- php - Using fopen, fwrite, fclose but file does not change
- java - 从文件中输入的数组不正确