Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x Python-New列返回每个唯一ID的最早数据_Python 3.x_Pandas_Data Cleaning - Fatal编程技术网

Python 3.x Python-New列返回每个唯一ID的最早数据

Python 3.x Python-New列返回每个唯一ID的最早数据,python-3.x,pandas,data-cleaning,Python 3.x,Pandas,Data Cleaning,我有一个包含三列(客户ID、交易、日期)的数据集。客户ID和交易之间存在一对多关系。我想添加一个新列,其中包含每个唯一客户ID的最早购买数据。我尝试了下面的代码 df['First Purchase Date'] = df.loc[df.groupby('Customer ID').Date.idxmin(),:] 但当我运行这段代码时,我收到一个错误,在处理上述异常期间,发生了另一个异常:然后以值错误结束。它也不会创建名为First Purchase Date的新列 根据另一列中给定的条件,

我有一个包含三列(客户ID、交易、日期)的数据集。客户ID和交易之间存在一对多关系。我想添加一个新列,其中包含每个唯一客户ID的最早购买数据。我尝试了下面的代码

df['First Purchase Date'] = df.loc[df.groupby('Customer ID').Date.idxmin(),:]
但当我运行这段代码时,我收到一个错误,在处理上述异常期间,发生了另一个异常:然后以值错误结束。它也不会创建名为First Purchase Date的新列

根据另一列中给定的条件,是否有一种简单的方法来查找列中最早的数据

我也尝试过使用min()


这段代码创建了一个新列,与我前面提到的第一行idxmin不同,但它将“NaN”作为所有内容的值

这是您需要的代码

min_dates=df.groupby(['Customer ID'])['Date'].min()
df['First Purchase Date']=df.apply(lambda行:min_dates.loc[row['Customer ID']],axis=1)
下面是一个简单的工作示例:

csv = """Customer ID,Date
1,2019
1,2018
1,2020
2,2000
2,2010
2,2005"""
from io import StringIO
import pandas as pd
df = pd.read_csv(StringIO(csv))

min_dates = df.groupby(['Customer ID'])['Date'].min()
df['First Purchase Date'] = df.apply(lambda row: min_dates.loc[row['Customer ID']], axis=1)
print(df)
这是输出

    Customer ID Date    First Purchase Date
0   1           2019    2018
1   1           2018    2018
2   1           2020    2018
3   2           2000    2000
4   2           2010    2000
5   2           2005    2000

这是您需要的代码

min_dates=df.groupby(['Customer ID'])['Date'].min()
df['First Purchase Date']=df.apply(lambda行:min_dates.loc[row['Customer ID']],axis=1)
下面是一个简单的工作示例:

csv = """Customer ID,Date
1,2019
1,2018
1,2020
2,2000
2,2010
2,2005"""
from io import StringIO
import pandas as pd
df = pd.read_csv(StringIO(csv))

min_dates = df.groupby(['Customer ID'])['Date'].min()
df['First Purchase Date'] = df.apply(lambda row: min_dates.loc[row['Customer ID']], axis=1)
print(df)
这是输出

    Customer ID Date    First Purchase Date
0   1           2019    2018
1   1           2018    2018
2   1           2020    2018
3   2           2000    2000
4   2           2010    2000
5   2           2005    2000

阅读stackoverflow指南。您应该发布一个包含代码和数据的最小示例,以显示错误,并发布错误本身。否则您将得到downvotes。此外,异常具有有价值的信息,可以告诉您代码中的错误。你应该仔细阅读你说的例外是什么意思?我确实发布了上面的代码。这还不够吗?你还需要什么?首先,你得到的错误,你应该经常阅读,并公布完整的错误和你的问题。其次,您发布了一些代码,但还不足以运行和复制您的问题。您需要发布一个显示错误的最小示例。顺便说一句,请注意下面的答案对于阅读stackoverflow指南很有用。您应该发布一个包含代码和数据的最小示例,以显示错误,并发布错误本身。否则您将得到downvotes。此外,异常具有有价值的信息,可以告诉您代码中的错误。你应该仔细阅读你说的例外是什么意思?我确实发布了上面的代码。这还不够吗?你还需要什么?首先,你得到的错误,你应该经常阅读,并公布完整的错误和你的问题。其次,您发布了一些代码,但还不足以运行和复制您的问题。您需要发布一个显示错误的最小示例。顺便说一句,注意下面的答案应该适用于youThanks Aviad。虽然我已经把它包含在我的代码中,并且它可以工作,但我并不完全理解它,尤其是第二行。为了更好地理解这一点,你对我能读到什么有什么建议吗?你需要了解熊猫索引是如何工作的。
df
每个事务有一行,
min\u日期
每个
客户ID有一行。因此,您不能只从一个数据帧分配到另一个数据帧。阅读更多熊猫教程以及索引和应用的文档。你会掌握它的窍门的。虽然我已经把它包含在我的代码中,并且它可以工作,但我并不完全理解它,尤其是第二行。为了更好地理解这一点,你对我能读到什么有什么建议吗?你需要了解熊猫索引是如何工作的。
df
每个事务有一行,
min\u日期
每个
客户ID有一行。因此,您不能只从一个数据帧分配到另一个数据帧。阅读更多熊猫教程以及索引和应用的文档。你会掌握窍门的