现在不推荐使用的to_matrix
和 values 将提供来自 dataframe 的数组。但是,我想使用数据框的“功能”-这意味着将列作为 Series 使用。如何从数据框中提取系列的列表?
答案 0 :(得分:4)
我认为您只需要转移.values
的收益
df.values.T.tolist()
Out[1321]:
[['a1', 'a3', 'a1', 'a1', 'a2', 'a2', 'a3', 'a4', 'a4', 'a1'],
['c1', 'c1', 'c1', 'c2', 'c2', 'c2', 'c3', 'c4', 'c5', 'c5']]
或者只是
df.values.T
Out[1322]:
array([['a1', 'a3', 'a1', 'a1', 'a2', 'a2', 'a3', 'a4', 'a4', 'a1'],
['c1', 'c1', 'c1', 'c2', 'c2', 'c2', 'c3', 'c4', 'c5', 'c5']],
dtype=object)
如果需要Series
的列表,我们也可以进行groupby
[y for _,y in df.groupby(level=0,axis=1)]
Out[1328]:
[ airport
0 a1
1 a3
2 a1
3 a1
4 a2
5 a2
6 a3
7 a4
8 a4
9 a1, carrier
0 c1
1 c1
2 c1
3 c2
4 c2
5 c2
6 c3
7 c4
8 c5
9 c5]
数据输入
df
Out[1329]:
airport carrier
0 a1 c1
1 a3 c1
2 a1 c1
3 a1 c2
4 a2 c2
5 a2 c2
6 a3 c3
7 a4 c4
8 a4 c5
9 a1 c5
答案 1 :(得分:2)
您可以通过列表理解来做到这一点:
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue,
let currentTextField = view.getSelectedTextField() {
let keyboardHeight = keyboardSize.height
let textFieldFrame = currentTextField.superview?.convert(currentTextField.frame, to: nil)
}
}
}
getSelectedTextField()
返回给定列中值的// Inside UIView Extension
// Get currently active textfield
func getSelectedTextField() -> UITextField? {
let totalTextFields = getTextFieldsInView(view: self)
for textField in totalTextFields{
if textField.isFirstResponder{
return textField
}
}
return nil
}
func getTextFieldsInView(view: UIView) -> [UITextField] {
var totalTextFields = [UITextField]()
for subview in view.subviews as [UIView] {
if let textField = subview as? UITextField {
totalTextFields += [textField]
} else {
totalTextFields += getTextFieldsInView(view: subview)
}
}
return totalTextFields
}
}
答案 2 :(得分:2)
仅取值即可获得.to_dict('Series')
的系列列表。
list(df.to_dict('Series').values())
[0 a1
1 a3
2 a1
3 a1
4 a2
5 a2
6 a3
7 a4
8 a4
9 a1
Name: airport, dtype: object, 0 c1
1 c1
2 c1
3 c2
4 c2
5 c2
6 c3
7 c4
8 c5
9 c5
Name: carrier, dtype: object]
列表中的每个元素都是一个系列:
type(list(df.to_dict('Series').values())[0])
#pandas.core.series.Series
答案 3 :(得分:1)
您可以在numpy
结构化数组中跟踪与DataFrame中相同的许多信息(系列之间不同的dtype,系列名称)。熊猫有一个方便的方法可以做到这一点。我正在使用@Wen的示例数据。
u = df.to_records(index=False)
rec.array([('a1', 'c1'), ('a3', 'c1'), ('a1', 'c1'), ('a1', 'c2'),
('a2', 'c2'), ('a2', 'c2'), ('a3', 'c3'), ('a4', 'c4'),
('a4', 'c5'), ('a1', 'c5')],
dtype=[('airport', 'O'), ('carrier', 'O')])
u['airport']
array(['a1', 'a3', 'a1', 'a1', 'a2', 'a2', 'a3', 'a4', 'a4', 'a1'],
dtype=object)