Jak*_*ake 14 python dataframe pandas
有许多类似的问题,但没有具体到这个问题.
我有一个数据框列表,我需要使用一个唯一的列将它们合并在一起(date)
.字段名称不同,因此concat已经出局.
我可以手动使用df[0].merge(df[1],on='Date').merge(df[3],on='Date)
等由一个合并的每个DF之一,但问题是,数据帧中的列表中的号码与用户输入不同.
有没有什么方法可以合并,只是一次性组合列表中的所有数据帧?或者也许有些人会在循环中做到这一点?
我使用的是Python 2.7.
Psi*_*dom 56
您可以使用reduce
函数在哪里dfList
是您的数据框列表:
import pandas as pd
reduce(lambda x, y: pd.merge(x, y, on = 'Date'), dfList)
Run Code Online (Sandbox Code Playgroud)
作为演示:
df = pd.DataFrame({'Date': [1,2,3,4], 'Value': [2,3,3,4]})
dfList = [df, df, df]
dfList
# [ Date Value
# 0 1 2
# 1 2 3
# 2 3 3
# 3 4 4, Date Value
# 0 1 2
# 1 2 3
# 2 3 3
# 3 4 4, Date Value
# 0 1 2
# 1 2 3
# 2 3 3
# 3 4 4]
reduce(lambda x, y: pd.merge(x, y, on = 'Date'), dfList)
# Date Value_x Value_y Value
# 0 1 2 2 2
# 1 2 3 3 3
# 2 3 3 3 3
# 3 4 4 4 4
Run Code Online (Sandbox Code Playgroud)