我有一个数据帧:
import pandas as pd
e = [{'E1': 'A', 'E2': 'B', 'E3': 'C', 'EDAY1': 0, 'EDAY2': 1, 'EDAY3': 2}, {'E1': 'B', 'E2': '0', 'E3': '0', 'EDAY1': 2, 'EDAY2': -1, 'EDAY3': -1}, {'E1': 'F', 'E2': 'A', 'E3': 'D', 'EDAY1': 5, 'EDAY2': 5, 'EDAY3': 2}]
df = pd.DataFrame(e)
display(df)
输出:
E1 E2 E3 EDAY1 EDAY2 EDAY3
0 A B C 0 1 2
1 B 0 0 2 -1 -1
2 F A D 5 5 2
其中E1
到E3
是事件,EDAY1
到EDAY3
是相应事件发生的日期。请注意:
EDAY
设置为-1
E1
的优先级大于E2
,E2
的优先级大于E3
EDAY
不对应(参见最后一行)我想根据以下标准将这些事件转换为10个字符长的字符串:
因此,鉴于上述示例,我希望得到以下表示:
E1 E2 E3 EDAY1 EDAY2 EDAY3 E_STR
0 A B C 0 1 2 ABC0000000
1 B 0 0 2 -1 -1 00B0000000
2 F A D 5 5 2 00D00FA000
请注意,这不是家庭作业,但我是一个Python和熊猫新手,这让我难堪
我用
wide_to_long
将原始数据帧展平,然后排除-1和zip
将所有值放入list
的list
中,结构不好,但不用担心,我们只需要它创建一对值和位置(在我的理解中,EDAY是E中字符的位置)在beyond重塑之后,我们使用for循环来创建您需要的字符
相关问题 更多 >
编程相关推荐