python - 将现有数据框中的一列添加到每隔一列之间的另一列
问题描述
我会尽力解释这一点,因为我在描述标题时遇到了麻烦。我有两个数据框。我想做的是将 df1 中的一列添加到 df2 之间的所有其他列之间。例如,df1 看起来像这样:
Age City
0 34 Sydney
1 30 Toronto
2 31 Mumbai
3 32 Richmond
添加 df2 后,它看起来像这样:
Name Age Clicks City Country
0 Ali 34 10 Sydney Australia
1 Lori 30 20 Toronto Canada
2 Asher 31 45 Mumbai United States
3 Lylah 32 33 Richmond United States
在代码方面,我什至不确定从哪里开始。
'''Concatenating the dataframes'''
for i in range len(df2):
pos = i+1
df3 = df2.insert
#df2 = pd.concat([df1, df2], axis=1).sort_index(axis=1)
#df2.columns = np.arange(len(df2.columns))
#print (df2)
我原本打算通过一个循环来运行它,但我不太确定该怎么做。任何帮助,将不胜感激!
解决方案
您可以使用itertools.zip_longest
. 例如:
from itertools import zip_longest
new_columns = [
v
for v in (c for a in zip_longest(df2.columns, df1.columns) for c in a)
if not v is None
]
df_out = pd.concat([df1, df2], axis=1)[new_columns]
print(df_out)
印刷:
Name Age Clicks City Country
0 Ali 34 10 Sydney Australia
1 Lori 30 20 Toronto Canada
2 Asher 31 45 Mumbai United States
3 Lylah 32 33 Richmond United States
推荐阅读
- css - CSS:将图像适合未知大小的父级
- javascript - 即使在所有类和 id 都正确之后,JavaScript Modal 也无法正常工作
- c - 使用 SOCK_DGRAM 时使用 bind() 的目的是什么?
- mysql - MYSQL ERROR 1111 (HY000) at line 1: Invalid use of group function. How can I fix this error?
- java - 使用较新的 Java 进行弹性搜索会占用更多的 RAM
- c# - 尝试使用 LINQ 创建字典时出现转换错误
- mysql - 从 R 更新 mysql 表时,x 必须是字符或 SQL
- python - 读取csv字符串的函数
- javascript - 页面加载后响应式语音不起作用,单击需要
- networking - 无法访问 wifi 路由器管理门户