Python 多个两个相同的dataframe组成一个新的dataframe
Python multiple two identical dataframe to form a new dataframe
我有 2 个看起来相似的数据框:
df1:
df2:
我想通过乘以 df2 中的值来更新 df1 中的 "length" 列(对于 "country" - "city" 组合):
做了一些 Google,但只能找到类似 merge 或 concat 的东西。没有什么比在数据帧之间相乘更好的了。
如有任何帮助,我们将不胜感激。
你可以先加入2个基于country,city
的dfs,让length1和length2都在同一个df中。
newdf = df1.merge(df2,on=["country","city"],how = "left")
然后只需将您拥有的两个长度列相乘即可。
重命名其中一列length.
如果 2 列具有相同的名称则不起作用。
您可以合并基于国家和城市的列,然后创建一个新列,在其中计算新值,然后更新您的数据框:
# import df1
df1 = pd.read_excel(df1_from_directory)
df2 = pd.read_excel(df2_from_directory)
df1_test = df1
df2_test = df2
# merge the values from df1 basaed on city and country
df_merged = df1_test.merge(df2_test,on=["country","city"],how = "left")
df_merged
# create a new column in which you calculate the new values
df1_new_length = df_merged["df1_length"] * df_merged["length"]
# update the old column with the new values
df1_test.df1_length = df1_new_length
#
print(df1_test)
对我有用。
Pandas Multiindex 特性专为此类计算而设计。将数据帧重新索引为
df1 = df1.set_index(['country', 'city', 'road'])
df1
length
country city road
us ny m1 10
m2 20
la m3 30
m4 40
m5 50
df2 = df2.set_index(['country', 'city'])
df2
length
country city
us ny 1
la 2
然后简单地乘以 2 帧:
df1 = df1 * df2
df1
length
country city road
us la m3 60
m4 80
m5 100
ny m1 10
m2 20
如果您愿意,您当然可以事后重置索引:
df1.reset_index()
country city road length
us la m3 60
us la m4 80
us la m5 100
us ny m1 10
us ny m2 20
我有 2 个看起来相似的数据框:
df1:
df2:
我想通过乘以 df2 中的值来更新 df1 中的 "length" 列(对于 "country" - "city" 组合):
做了一些 Google,但只能找到类似 merge 或 concat 的东西。没有什么比在数据帧之间相乘更好的了。
如有任何帮助,我们将不胜感激。
你可以先加入2个基于country,city
的dfs,让length1和length2都在同一个df中。
newdf = df1.merge(df2,on=["country","city"],how = "left")
然后只需将您拥有的两个长度列相乘即可。
重命名其中一列length.
如果 2 列具有相同的名称则不起作用。
您可以合并基于国家和城市的列,然后创建一个新列,在其中计算新值,然后更新您的数据框:
# import df1
df1 = pd.read_excel(df1_from_directory)
df2 = pd.read_excel(df2_from_directory)
df1_test = df1
df2_test = df2
# merge the values from df1 basaed on city and country
df_merged = df1_test.merge(df2_test,on=["country","city"],how = "left")
df_merged
# create a new column in which you calculate the new values
df1_new_length = df_merged["df1_length"] * df_merged["length"]
# update the old column with the new values
df1_test.df1_length = df1_new_length
#
print(df1_test)
对我有用。
Pandas Multiindex 特性专为此类计算而设计。将数据帧重新索引为
df1 = df1.set_index(['country', 'city', 'road'])
df1
length
country city road
us ny m1 10
m2 20
la m3 30
m4 40
m5 50
df2 = df2.set_index(['country', 'city'])
df2
length
country city
us ny 1
la 2
然后简单地乘以 2 帧:
df1 = df1 * df2
df1
length
country city road
us la m3 60
m4 80
m5 100
ny m1 10
m2 20
如果您愿意,您当然可以事后重置索引:
df1.reset_index()
country city road length
us la m3 60
us la m4 80
us la m5 100
us ny m1 10
us ny m2 20