我需要将数据框与列表组合在一起,其方式类似于SQL中的UnionAll。这是一个例子:
df1 = pd.DataFrame([('A',10),('B',20),('C',30)], columns=['code','value'])
DF1
code value
A 10
B 20
C 30
list_A = [100,200,300]
结果,我需要获得如下数据框:
code value list_A
A 10 100
A 10 200
A 10 300
B 20 100
B 20 200
B 20 300
C 30 100
C 30 200
C 30 300
答案 0 :(得分:0)
这是一种实现所需结果的方法,但这仅在list_A
中的行数等于import pandas as pd
df2 = reduce(
lambda a, b: pd.concat([a, b]),
(df1 for i in range(len(list_A)))
)
df2 = df2.reset_index(drop=True)
的长度时才有效。 (我认为这是你的问题唯一有道理的方法)。
首先使用pandas.concat()
来重复"重复"你的DataFrame。
df2['list_A'] = list_A * len(list_A)
然后添加新列:
# code value list_A
#0 A 10 100
#1 B 20 200
#2 C 30 300
#3 A 10 100
#4 B 20 200
#5 C 30 300
#6 A 10 100
#7 B 20 200
#8 C 30 300
输出:
reduce()
如果你正在使用python3,则需要导入from functools import reduce
:
App