【发布时间】:2020-01-11 01:05:58
【问题描述】:
对此很陌生,并且无法找到正确的方法。
假设我的 dataframe1 看起来像这样,列名和一堆数字作为数据:
D L W S
1 2 3 4
4 3 2 1
1 2 3 4
我的 dataframe2 看起来像这样:
Name1 Name2 Name3 Name4
2 data data D
3 data data S
4 data data L
5 data data S
6 data data W
我想要一个新的数据帧,其结果是将第二个数据帧的每一行与第一个数据帧的每一行相乘,其中它将 Name1 的值与与 Name4 值匹配的 dataframe1 列中的值相乘数据框2。
有什么好办法吗?我试图研究使用 where、condition 和 apply 等方法,但对事情的理解还不够好,无法让事情发挥作用。
编辑:使用以下代码为 DataFrames 创建假数据:
d1 = {'D':[1,2,3,4,5,6],'W':[2,2,2,2,2,2],'L':[6,5,4,3,2,1],'S':[1,2,3,4,5,6]}
d2 = {'col1': [3,2,7,4,5,6], 'col2':[2,2,2,2,3,4], 'col3':['data', 'data', 'data','data', 'data', 'data' ], 'col4':['D','L','D','W','S','S']}
df1 = pd.DataFrame(data = d1)
df2 = pd.DataFrame(data = d2)
再次编辑以获取更多信息
首先我在此时更改了 df1 中的数据,因此这个新示例会变得更好。 好的,所以从这两个数据帧中,如果乘法通过 df2 的前四行,我想创建的数据帧会像这样出现。可以看到 Col2 和 Col3 没有变化,但是根据 Col4 的字母,Col1 与 df1 中的对应因子相乘:
d3 = { 'col1':[3,6,9,12,15,18,12,10,8,6,4,2,7,14,21,28,35,42,8,8 ,8,8,8,8], 'col2':[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ,2,2,2,2,2,2], 'col3':['data','data','data','data','data','data','data','data' ,'数据','数据','数据','数据','数据','数据','数据','数据','数据','数据','数据','数据','数据','数据','数据','数据'],'col4':['D','D','D','D','D','D','L',' L','L','L','L','L','D','D','D','D','D','D','W','W' ,'W','W','W','W']}
df3 = pd.DataFrame(data = d3)
【问题讨论】:
-
请提供可以复制到 python 控制台的数据帧版本。
-
是的先生,我添加了一个编辑信息,可以使数据帧像我描述的那样。
-
谢谢,这让事情变得容易多了!但我不确定我是否理解你的描述。您还可以添加您想要创建的数据框吗?
-
您好,我已经为目标数据框添加了一个示例。我想说我真的很感谢你看我的问题,因为我真的很难过。
标签: pandas dataframe conditional-statements