我想将数据框中的列格式化为新列
所以我用过:
newdataframe["agregate1"]=list(df.iloc[:,0:4])
但它不起作用。 它返回一个[" intensity_x"]列表(以x作为列索引),这些字符串是我的数据帧列的名称。
虽然
newdataframe["agregate1"]=list(df.iloc[0,0:4])
将返回
等数据[0.0,0.0,0.0,0.0,0.0,0.0,29200000000.0,2830000000.0,30300000000.0,0.0,2980000000.0,3000000000.0]。
实际上这很重要,因为我无法正确检索我的数据,这似乎是一个错误,或者我错过了一些重要的内容。
阅读: pack dataframe columns to list in pandas
我通过使用df.values而不是iloc来规避问题,但我仍然不明白使用"整个切片"有什么问题,而只是改为使用标题。这很奇怪。感谢
答案 0 :(得分:1)
如果使用:
df1 = df.iloc[:,0:4]
输出为DataFrame
。
如果:
df2 = df.iloc[0,0:4]
输出为Series
- row
中的df
和1:4
列中的df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
df1 = df.iloc[:,0:4]
print (df1)
A B C D
0 1 4 7 1
1 2 5 8 3
2 3 6 9 5
df2 = df.iloc[0,0:4]
print (df2)
A 1
B 4
C 7
D 1
Name: 0, dtype: int64
。
样品:
numpy array
然后,如果需要输出print (df1.values)
[[1 4 7 1]
[2 5 8 3]
[3 6 9 5]]
,则可以使用values
:
list
如果需要输出lists
的{{1}},请使用:
print (df1.values.tolist())
[[1, 4, 7, 1], [2, 5, 8, 3], [3, 6, 9, 5]]
如果需要新列中的列表:
df['new'] = df.iloc[:,0:4].values.tolist()
print (df)
A B C D E F new
0 1 4 7 1 5 7 [1, 4, 7, 1]
1 2 5 8 3 3 4 [2, 5, 8, 3]
2 3 6 9 5 6 3 [3, 6, 9, 5]
df['new'] = list(df.iloc[:,0:4].values)
print (df)
A B C D E F new
0 1 4 7 1 5 7 [1, 4, 7, 1]
1 2 5 8 3 3 4 [2, 5, 8, 3]
2 3 6 9 5 6 3 [3, 6, 9, 5]