我有下面的数据框,
| 识别号|集团|日期_时间_1|日期时间2|差异|新建_列|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 一百二十三|A类|2021年10月14日15:19|2021年10月14日15时32分|十三|* * 第一次**|
| 一百二十三|A类|2021年10月14日15:19|2021年10月14日15:36|十七|零|
| 一百二十三|A类|2021年10月14日15:19|2021年10月14日15时37分|十八|零|
| 一百二十三|A类|2021年10月14日15:19|2021年10月14日16:29|七十|零|
| 一百二十三|A类|2021年10月14日15:19|2021年10月14日17时04分|一百零五|零|
| 一百二十三|乙|2021年10月14日15:21|2021年10月14日15时32分|十一|零|
| 一百二十三|乙|2021年10月14日15:21|2021年10月14日15:36|十五|* * 第二次**|
| 一百二十三|乙|2021年10月14日15:21|2021年10月14日15时37分|十六|零|
| 一百二十三|乙|2021年10月14日15:21|2021年10月14日16:29|六十八|零|
| 一百二十三|乙|2021年10月14日15:21|2021年10月14日17时04分|一百零三|零|
| 一百二十三|C级|2021年10月14日15:22|2021年10月14日15时32分|十个|零|
| 一百二十三|C级|2021年10月14日15:22|2021年10月14日15:36|十四|零|
| 一百二十三|C级|2021年10月14日15:22|2021年10月14日15时37分|十五|* * 第三次**|
| 一百二十三|C级|2021年10月14日15:23|2021年10月14日16:29|六十七|* * 第三个_A**|
| 一百二十三|C级|2021年10月14日15:48|2021年10月14日17时04分|一百零二|* * 第三个_B**|
| 七八九|A类|2021年10月14日15:19|2021年10月14日15时32分|十三|* * 第一次**|
| 七八九|A类|2021年10月14日15:19|2021年10月14日15:36|十七|零|
| 七八九|乙|2021年10月14日15:21|2021年10月14日15时32分|十一|零|
| 七八九|乙|2021年10月14日15:21|2021年10月14日15:36|十五|* * 第二次**|
| 七八九|C级|2021年10月14日15:22|2021年10月14日15时32分|十个|零|
我正在尝试创建一个新列,该列将"First"分配给组"A"中最小的"Date_Time_2",并将"second"分配给组B中第二小的"Date_Time_2"。类似地,它将"third"分配给组C中第三小的"Date_Time_2"。
我想让它赋值"Third_A","Third_B"等等,一旦循环到达"ID"的最后一个"Group"。所以,一旦到达最后一组"ID",它将分配"第三或3"(因为数据集中只有三个唯一的组)到第三个最低的"Date_Time_2",该"Date_Time_2"未在先前的组中使用,并且如果它将为新的"日期_时间_1 ",它将分配"第三_A "、"第三_B "等等
我已经尝试了下面的代码,但它不工作,
`df.drop('New_Column', axis = 1, inplace = True)
df['New_Column'] = pd.Series()
for i, v in df['Difference'].items():
a = 0
b = 1
diff = df[df['Group'] == df['Group'].unique()[a]]['Difference'].nsmallest(b).min()
if diff == v:
df.loc[i, 'New_Column'] = "Yes"
b = b + 1
a = a + 1`
任何帮助都是最好的!
2条答案
按热度按时间f2uvfpb91#
您可以尝试以下操作:
Date_Time_2
包含日期时间。Date_Time_2
排序后,按Group
对df
分组。n
的第Date_Time_2
子组(从0开始)的索引,并在相应的New
列行上设置n + 1
。New
列。也许你得把最后一部分换成
字母值是否也应该分组。
问题中样本的结果:
如果必须为每个
ID
组完成整个过程,则可以尝试而不是。
j5fpnvbx2#
首先,确保你正确地读取csv值。这意味着日期时间值应该被正确地解释,例如。
如果您已经有了 Dataframe ,您可以使用以下代码来解析 Dataframe 中日期时间对象,
现在,只需在不同的组中迭代,并在排序列表中过滤出date_time_2列,最后取出适当的索引,例如,对于组“A”,取出“0”索引,对于组“B”,取出“1”索引......,选择适当的 Dataframe 并更新新列中的值
注意:添加数字要容易得多,例如“first”、“second”,如果需要,可以创建一个新列表,并从索引中赋值,如下所示