【问题标题】:Python - Frequency Table Between Unmatched 2 Data Frame with ConditionPython - 具有条件的不匹配 2 数据帧之间的频率表
【发布时间】:2023-01-27 17:13:57
【问题描述】:

我的表包含大约 100k 个带有日期的唯一值,我有另一个表包含全年的 8M 记录我需要的是计算第一个表中的每个值在特定时间内在大表上重复了多少次(每行提到的日期后 30 天)

表一:唯一值

num Close Time max
1110 01-11-2022 8:47:00 AM 01-12-2022 8:47:00 AM
1111 02-11-2022 8:47:00 AM 02-12-2022 8:47:00 AM
1112 03-11-2022 8:47:00 AM 03-12-2022 8:47:00 AM

表二:包含唯一值和重复值

Number  Close Time
1110    01-11-22 8:47
1110    02-11-22 8:47
1110    03-11-22 8:47
1111    02-11-22 8:47
1111    05-11-22 8:47
1111    06-12-22 8:47
1112    03-11-22 8:47
1112    08-12-22 8:47
1112    09-12-22 8:47

我需要如下结果,稍后我需要自己获取原始数据 第一个包括我正在寻找的价值

Result  Count
1110    3
1111    2
1112    1

我做了下面的操作,首先提取了我需要稍后计算的唯一值

import pandas as pd
    CREATED = pd.read_table(r'C:\Users\Desktop\2022.txt', sep=',',encoding='cp1256',low_memory=False)   
    Jan = CREATED[CREATED.Close_Month == 1]    
    Jan.sort_values(by=['customer','Time'])    
    janu= Jan.drop_duplicates(subset='customer', keep='first')    
    janu.to_csv(r'C:\Users\Desktop\Jan.csv',encoding='cp1256', index=None )

我尝试了下面的计数,但我不知道如何为日期间隔添加条件

1-

    janu['count'] = janu['num'].map(CREATED['num'].value_counts())

另一种方式

import pandas as pd
import datetime

A = pd.read_table(r'C:\Users\Ahmed\Desktop\1.csv',sep=',',encoding='cp1256',low_memory=False)
B = pd.read_table(r'C:\Users\Ahmed\Desktop\2.csv',sep=',',encoding='cp1256',low_memory=False)

for value in A['num']:
    x = B[B['num'] == value]
    print(x)

【问题讨论】:

    标签: python conditional-statements


    【解决方案1】:

    在我看来,您只想计算第二个数据帧中 Number 的出现次数,并且可能与第一个数据帧无关。然后我认为一个简单的.value_counts() 会有所帮助:

    B = pd.read_table(...)
    B['num'].value_counts()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 2021-04-12
      相关资源
      最近更新 更多