我有一个数据框(如下所示),我需要根据值列中的条件将每一行分成几行,以便将来进行数据透视分析。 (条件:如果列为空,则跳过)
原始数据框:
i, j = input().split()
i = int(i)
j = float(j)
if(i % 5 == 0 and i + 0.50 < j):
r = j - 0.50 - i
print("%.2f"%r)
else:
print("%.2f"%j)
所需的数据框:
ID name apple pear banana
01 xyz 10 3
02 abc 9 10 5
03 def 8 9
04 fds 5
我是熊猫数据分析的新手。 (作为老式人经常使用VBA)我尝试使用 ID Attribute1 Name value
01 xyz apple 10
01 xyz banana 3
02 abc apple 9
02 abc pear 10
02 abc banana 5
03 def apple 8
03 def banana 9
04 fds apple 5
和iteritems()
,但没有成功。请帮忙!
.loc
答案 0 :(得分:1)
您可以使用def shell_pressed_enter():
code_line_run = shell.get(shell_line_number)
melt
答案 1 :(得分:0)
解决方案非常简单:用NaN替换空字符串,将前两列转换为多索引,将其余列转换为另一个索引级别。此时丢失的值将被丢弃。
{'amt_coffee': 7.0, 'cust': u'333', 'nbr_coffee': 2}
{'amt_coffee': 0, 'cust': u'222', 'nbr_coffee': 0}
{'amt_coffee': 3.5, 'cust': u'111', 'nbr_coffee': 1}
{'nbr_gas_station': 0, 'cust': u'333', 'amt_gas_station': 0}
{'nbr_gas_station': 2, 'cust': u'222', 'amt_gas_station': 87.5}
{'nbr_gas_station': 0, 'cust': u'111', 'amt_gas_station': 0}
(可选)重命名列:
result = df.replace('', np.nan)\
.set_index(['ID','name']).stack().reset_index()
# ID name level_2 0
#0 01 xyz apple 10
#1 01 xyz banana 3
#2 02 abc apple 9
#3 02 abc pear 10
#4 02 abc banana 5
#5 03 def apple 8
#6 03 def banana 9
#7 04 fds apple 5