PYTHON编码
我的目标是每次运行Python代码时,将一个列值存储在另一个特定列中。它将基本上是比较两个excel电子表格(昨天和今天)的一个特定的列。例如,面试的候选人#是我想从其中提取的列值,并将其存储在新列“昨天面试的候选人的#”中。
文件#1
学校#今天面试的候选人#
美国广播公司访谈25
文件#2
学校#今天面试的候选人#昨天面试的候选人##
美国广播公司采访30人访谈25
发布于 2022-08-15 20:52:26
我不知道我是否理解您想要做什么,但是我假设您想要从您的dataframe中更改某些列中的值,同时将旧值保留在另一列上。如果是这样的话,下面是如何做到这一点的,尽管我不建议将它用于测试以外的任何其他目的:
import pandas as pd
from datetime import datetime
class CustomDataFrame(pd.DataFrame):
"""
PROBABLY NOT A GOOD IDEA!
Pandas DataFrame class with custom `__setattr__`, and `__setitem__` that store
the previous values from a given column, before modifying it.
"""
def __setattr__(self, key, value):
if hasattr(self, key):
self[key + '_' + datetime.now().strftime('%Y_%m_%d_%H%M%S')] = self[key]
self[key] = value
def __setitem__(self, key, value):
if hasattr(self, key):
super().__setitem__(key + '_' + datetime.now().strftime('%Y_%m_%d_%H%M%S'), self[key])
super().__setitem__(key, value)
## Example on how it works:
dictionary = {'name1': 'A', 'name2': 'B', 'value1': [1, 2, 3, 4], 'value2': [6, 3, 4, 5]}
df = CustomDataFrame(dictionary)
print(df)
"""
name1 name2 value1 value2
0 A B 1 6
1 A B 2 3
2 A B 3 4
3 A B 4 5
"""
# Modifying values from column "name1":
df['name1'] = 'B'
print(df)
"""
name1 name2 value1 value2 name1_2022_08_15_205120
0 B B 1 6 A
1 B B 2 3 A
2 B B 3 4 A
3 B B 4 5 A
"""
# Modifying "name1" once again:
df.name1 = 'C'
print(df)
"""
name1 name2 value1 value2 name1_2022_08_15_205120 name1_2022_08_15_205313
0 C B 1 6 A B
1 C B 2 3 A B
2 C B 3 4 A B
3 C B 4 5 A B
"""https://stackoverflow.com/questions/73363163
复制相似问题