gpt4 book ai didi

python - 从所有其他行中减去每一行并在 python 中查看为矩阵

转载 作者:行者123 更新时间:2023-12-05 06:00:03 26 4
gpt4 key购买 nike

我有这样的 df:

id   date
1 01-02-2013
2 01-06-2013
3 05-31-2013
4 07-06-2013

我想建立一个矩阵来显示每个 id,特定 id 与所有其他 id 之间耗时(以天为单位)。即像这样的东西:

   1  2  3    4
1 0 4 -149 -185
2 4 0 -145 -181
....

谢谢

最佳答案

df['date'] = pd.to_datetime(df['date'])
df.set_index('id', inplace=True)

您可以从其中的每个值中减去日期列的所有值,最终结果是:

df['date'].apply(lambda x:x-df['date'])
id 1 2 3 4
id
1 0 days -4 days -149 days -185 days
2 4 days 0 days -145 days -181 days
3 149 days 145 days 0 days -36 days
4 185 days 181 days 36 days 0 days

如果你不想显示days字符串,你可以使用dt.days属性来获取天数:

df['date'].apply(lambda x:x-df['date']).apply(lambda x: x.dt.days)
id 1 2 3 4
id
1 0 -4 -149 -185
2 4 0 -145 -181
3 149 145 0 -36
4 185 181 36 0

如果你想获得 numpy 数组,你最终可以使用 .values 属性:

df['date'].apply(lambda x:x-df['date']).apply(lambda x: x.dt.days).values

array([[ 0, -4, -149, -185],
[ 4, 0, -145, -181],
[ 149, 145, 0, -36],
[ 185, 181, 36, 0]], dtype=int64)

关于python - 从所有其他行中减去每一行并在 python 中查看为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67876963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com