python - pandas - 将两个日期框放在一列中
问题描述
我有两个数据框
df = pd.DataFrame({'A': [1,2,3,4], 'B': [5,6,7,8], 'C': [9,10,11,12]})
df2 = pd.DataFrame({'A': ['a','b','c','d'], 'B': ['e','f','g','h'], 'C': ['i','j','k','l']})
我正在尝试组合这两个数据框,但还将每列的标题添加到单独的列中。我想要制作的内容如下。
df3 = pd.DataFrame({'Serial': ['a','b','c','d','e','f','g','h','i','j','k','l'],
'Cost': [1,2,3,4,5,6,7,8,9,10,11,12],
'Name': ['A','A','A','A','B','B','B','B','C','C','C','C']})
我曾尝试遍历列,但结果一团糟。
解决方案
这是一种方法
In [33]: (pd.concat([df.unstack(), df2.unstack()], axis=1).reset_index()
.drop('level_1', 1)
.rename(columns={'level_0': 'Name', 0: 'Cost', 1: 'Serial'}))
Out[33]:
Name Cost Serial
0 A 1 a
1 A 2 b
2 A 3 c
3 A 4 d
4 B 5 e
5 B 6 f
6 B 7 g
7 B 8 h
8 C 9 i
9 C 10 j
10 C 11 k
11 C 12 l
另一种方式。
In [42]: pd.DataFrame({
'Name': df.columns.repeat(len(df.index)),
'Cost': df.values.flatten(order='k'),
'Serial': df2.values.flatten(order='k')})
Out[42]:
Cost Name Serial
0 1 A a
1 2 A b
2 3 A c
3 4 A d
4 5 B e
5 6 B f
6 7 B g
7 8 B h
8 9 C i
9 10 C j
10 11 C k
11 12 C l
推荐阅读
- swift - 如何在不等待结果的情况下异步调用异步函数
- ubuntu - 使用 sed 将用户添加到 /etc/group
- r - R 中的 left_join 返回和错误“错误:数据中必须存在连接列” colnames() 表示存在列名称
- oracle - 请帮助将子句扫描合二为一
- cut - 如何用 grep 和 wc 一起做唯一计数?
- c# - 如何设置我试图打开的文件的路径以在托管时打开而不是依赖于 ASP.net 的本地主机目录?
- javascript - jQuery mouseover 在文档上无法按预期工作
- php - Global Site Tag not working with WordPress, WooCommerce
- amazon-web-services - 如何更改 lambda 的默认参数值?
- google-cloud-platform - 谷歌文本到语音 - 休息后不读的词