我有清单:
[['abc', 1, 2, 3], ['bfg', 4, 5, 6], ['abc', 7, 8, 9], ['bfg', 10, 11, 12]]
然后我将它变成一个pandas DataFrame,它返回(在添加颜色为lst[4] = 'blue'
的列之后):
0 1 2 3 4
0 abc 1 2 3 blue
1 bfg 4 5 6 blue
2 abc 7 8 9 blue
3 bfg 10 11 12 blue
无论如何都要让它返回:
0 1 2 3 4
0 abc 1 2 3 blue
1 bfg 4 5 6 blue
2 abc 7 8 9 red
3 bfg 10 11 12 red
答案 0 :(得分:1)
DataFrame.from_records
的解决方案:
lst = [['abc', 1, 2, 3], ['bfg', 4, 5, 6], ['abc', 7, 8, 9], ['bfg', 10, 11, 12]]
df = pd.DataFrame.from_records(lst)
print (df)
0 1 2 3
0 abc 1 2 3
1 bfg 4 5 6
2 abc 7 8 9
3 bfg 10 11 12
按loc
添加值:
l = len(df.index) // 2
df.loc[:l - 1, 4] = 'blue'
df.loc[l:, 4] = 'red'
print (df)
0 1 2 3 4
0 abc 1 2 3 blue
1 bfg 4 5 6 blue
2 abc 7 8 9 red
3 bfg 10 11 12 red
更有意思的是,df
- 地板分区//
有多长的奇数:
lst = [['abc', 1, 2, 3], ['bfg', 4, 5, 6], ['abc', 7, 8, 9],
['bfg', 10, 11, 12], ['bfg', 3, 4, 5]]
df = pd.DataFrame.from_records(lst)
print (df)
0 1 2 3
0 abc 1 2 3
1 bfg 4 5 6
2 abc 7 8 9
3 bfg 10 11 12
4 bfg 3 4 5
l = len(df.index) // 2
df.loc[:l, 4] = 'blue'
df.loc[l:, 4] = 'red'
print (df)
0 1 2 3 4
0 abc 1 2 3 blue
1 bfg 4 5 6 blue
2 abc 7 8 9 red
3 bfg 10 11 12 red
4 bfg 3 4 5 red
或正常分工/
:
l = len(df.index) / 2
df.loc[:l, 4] = 'blue'
df.loc[l:, 4] = 'red'
print (df)
0 1 2 3 4
0 abc 1 2 3 blue
1 bfg 4 5 6 blue
2 abc 7 8 9 blue
3 bfg 10 11 12 red
4 bfg 3 4 5 red
答案 1 :(得分:1)
除了np.repeat
之外,还可以使用np.resize
进行简化,以解释由于浮点除法造成的大小损失。
lst[4] = np.resize(np.repeat(['blue', 'red'], lst.shape[0] // 2), lst.shape[0])
答案 2 :(得分:0)
最简单的是:
lst.loc[len(lst)/2:, 4] = 'red'