python - 通过将逻辑应用于现有数据框来创建新的 pandas 数据框
问题描述
我有两个熊猫数据框,如下所示。
data_1= {'features_names': ['F1','F2','F3','F4'],
'Sample_1': [2260,25000,27000,35000],
'Sample_2': [22000,25,8,35000],
'Sample_3': [2350,25000,27000,3900],
'Sample_4': [25000,2570,250,3000]
}
df_1 = pd.DataFrame(data_1)
和另一个数据框如下。
data_2={'Sample_name': ['Sample_2','Sample_3','Sample_4','Sample_1'],
'class': ['class_1','class_1','class_2','class_3'],
'sex': ['m','m','f','m'],
'age': [23,25,21,35],
'RIN': [2.5,2.8,3.8,3.0]
}
df_2 = pd.DataFrame(data_2)
现在使用df_1
and df_2
,我想创建df_3
应该如下。
我已经使用以下代码手动完成了。
data_3= {
'class': ['class_3','class_1','class_1','class_2'],
'sex': ['m','m','f','f'],
'age': [35,23,25,21],
'RIN': [3.0,2.5,2.8,3.8],
'features_names': ['F1','F2','F3','F4'],
'Sample_1': [2260,25000,27000,35000],
'Sample_2': [22000,25,8,35000],
'Sample_3': [2350,25000,27000,3900],
'Sample_4': [25000,2570,250,3000]
}
df_3 = pd.DataFrame(data_3)
但实际上,我有大量的数据,手动操作是不可能的。有没有自动的方法来做到这一点。
解决方案
concat
与按列排序的 DataFrame 一起Sample_name
使用,DataFrame.sort_values
然后删除列:
df_3 = (pd.concat([df_2.sort_values('Sample_name').reset_index(drop=True), df_1], axis=1)
.drop('Sample_name', axis=1))
print (df_3)
class sex age RIN features_names Sample_1 Sample_2 Sample_3 \
0 class_3 m 35 3.0 F1 2260 22000 2350
1 class_1 m 23 2.5 F2 25000 25 25000
2 class_1 m 25 2.8 F3 27000 8 27000
3 class_2 f 21 3.8 F4 35000 35000 3900
Sample_4
0 25000
1 2570
2 250
3 3000
推荐阅读
- r - 我需要在等于 1 的两个日期之间创建一个虚拟变量
- python - 在pygame中绘制多个圆圈的最快方法是什么?
- google-cloud-platform - 使用合并功能将数据从统计表加载到 BigQuery DWH 中的维度和事实是否正确?
- postgresql - 在 postgresql 中制作动态自定义系列(尽可能避免循环)
- c# - 是否可以将子字符串与 OfType 一起使用
? - javascript - 在同一终端上运行的 VScode 实时共享
- vue.js - 如何在任何纵横比下实现相同的外观/设计?
- asp.net-core-3.1 - 模型的 Entity Framework Core 搜索字符串
- android - 在 Espresso 测试中使用 Firebase ScreenShotter 时如何更好地控制屏幕截图名称?
- python - 列表重复N次python的组合