Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从单个数据帧中的行查找数据以在同一数据帧中创建新列_Python_Pandas - Fatal编程技术网

Python 从单个数据帧中的行查找数据以在同一数据帧中创建新列

Python 从单个数据帧中的行查找数据以在同一数据帧中创建新列,python,pandas,Python,Pandas,我不熟悉Python和Pandas,一直在寻找一种优雅的解决方案,用于向Pandas数据帧添加列。我需要在一行中查找“名称”和“日期”组合的“值,其中“分母将匹配“分子”。它被用来为一个大型股票投资组合创建比率,这个投资组合大约有10000个条目。在下面的示例中,新列的第一个值为0.00,第二个值为345.943,依此类推。我在stackoverflow上已经尝试了很多方法,但是没有一种方法能像我所寻求的那样有效。任何帮助都将不胜感激 以下是示例数据: Numerator

我不熟悉Python和Pandas,一直在寻找一种优雅的解决方案,用于向Pandas数据帧添加列。我需要在一行中查找“名称”和“日期”组合的“值,其中“分母将匹配“分子”。它被用来为一个大型股票投资组合创建比率,这个投资组合大约有10000个条目。在下面的示例中,新列的第一个值为0.00,第二个值为345.943,依此类推。我在stackoverflow上已经尝试了很多方法,但是没有一种方法能像我所寻求的那样有效。任何帮助都将不胜感激

以下是示例数据:

Numerator Name Date value Denominator ------------------ ------------------ --------- ------- ------------- 60 Revenue NTNX - Nutanix Inc 2016-01-01 102.697 Total Assets 61 Revenue NTNX - Nutanix Inc 2016-04-01 114.690 Total Assets 62 Revenue NTNX - Nutanix Inc 2016-07-01 198.267 Total Assets 63 Revenue NTNX - Nutanix Inc 2016-10-01 188.561 Total Assets 285 Total Assets NTNX - Nutanix Inc 2016-01-0 **0.000** 1 286 Total Assets NTNX - Nutanix Inc 2016-04-01 **345.943* 1 287 Total Assets NTNX - Nutanix Inc 2016-07-01 399.08 1 288 Total Assets NTNX - Nutanix Inc 2016-10-01 648.263 1 分子名称日期值分母 ------------------ ------------------ --------- ------- ------------- 60收入NTNX-Nutanix Inc 2016-01-01 102.697总资产 61收入NTNX-Nutanix公司2016-04-01 114.690总资产 62收入NTNX-Nutanix Inc 2016-07-01 198.267总资产 63收入NTNX-Nutanix公司2016-10-01 188.561总资产 285 NTNX总资产-Nutanix Inc 2016-01-0**0.000**1 286总资产NTNX-Nutanix Inc 2016-04-01**345.943*1 287 NTNX总资产-Nutanix公司2016-07-01 399.08 1 288 NTNX总资产-Nutanix公司2016-10-01 648.263 1
我不认为有什么简单的方法可以做到这一点。我找到的唯一方法是:

# Get two copy of dataframe, might have to call .copy here
df_numerator, df_denominator = dataframe, dataframe

df_numerator["key"] = df_numerator["numerator"]
df_denominator["key"] = df_denominator["denominator"]

# This will match the row with same Name, Date and key tuples.
merged_df = df_numerator.join(df_denominator, on=["Name", "Date", "key"]
# Will work provided the length matches
dataframe["new_column"] = merged_df["value"]

大家好,欢迎来到SO,请阅读您的示例数据(文本形式)和示例输出,并重新格式化您的问题。谢谢。我感谢你的帮助,当你从起跑门跳出来的时候,这总是一次很好的学习经历。谢谢卡尔!我会试试看,然后告诉你结果。我还没有用过那份复印件。