我有一个数据框df:
Item Name Location Jan-Units Feb-Units Mar-Units Jan-Rev Feb-Rev Mar-Rev Jan-Trl Feb-Trl Mar-Trl
123 ABC CA 20 30 40 100 150 200 1.00 1.50 2.00
456 DEF AZ 25 35 45 125 175 225 1.25 1.75 2.25
我需要多次熔化此df,使前3列保持不变,并根据熔化的列的前3个字符添加日期列。输出应为:
Item Name Location Date Units Rev Trl
123 ABC CA 01/01/2020 20 100 1.00
123 ABC CA 02/01/2020 30 150 1.50
123 ABC CA 03/01/2020 40 200 2.00
456 DEF AZ 01/01/2020 25 125 1.25
456 DEF AZ 02/01/2020 35 175 1.75
456 DEF AZ 03/01/2020 45 225 2.25
(实际df包含2020年的所有月份和几百行)
答案 0 :(得分:6)
首先重塑您的列,然后使用pd.wide_to_long
:
import pprint
import xmltodict
xml = '''<r><department name="RnD">
<section name="Prototyping">
<room name="A.2.25">
<machine name="Yamaha YSM" serial="123456"/>
<machine name="Yamaha YSM" serial="123556"/>
<machine name="Yamaha YSM" serial="654321"/>
<machine name="Omron X-Ray" serial="X235-566"/>
</room>
</section>
<department name="Oper">
<section name="SectionName">
<room name="A.2.25">
<machine name="Yamaha YSM" serial="123456"/>
<machine name="Yamaha YSM" serial="123556"/>
<machine name="Yamaha YSM" serial="654321"/>
<machine name="Omron X-Ray" serial="X235-566"/>
</room>
<room name="A.2.251">
<machine name="Yamaha YSM" serial="123456"/>
<machine name="Yamaha YSM" serial="123556"/>
<machine name="Yamaha YSM" serial="654321"/>
<machine name="Omron X-Ray" serial="X235-566"/>
</room>
</section>
</department>
</department></r>'''
data = xmltodict.parse(xml)
pprint.pprint(data)
print(data['r']['department']['@name'])