Попробуйте следующее:
pd.set_option('display.expand_frame_repr', False)
Из документации:
display.expand_frame_repr: boolean
Вывести распечатку полного представления DataFrame для широких DataFrames в нескольких строках, max_columns по-прежнему соблюдается, но вывод будет охватывать несколько «страниц», если его ширина превышает display.width. [default: True] [в настоящее время: True]
См .: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html
Что-то вроде этого может сделать трюк. Вероятно, это не распространяется на все возможности, но это начало.
public static Type GetObjectType<T>(Expression<Func<T, object>> expr)
{
if ((expr.Body.NodeType == ExpressionType.Convert) ||
(expr.Body.NodeType == ExpressionType.ConvertChecked))
{
var unary = expr.Body as UnaryExpression;
if (unary != null)
return unary.Operand.Type;
}
return expr.Body.Type;
}
Хотя это не невозможно, это особенно сложно. Это потребует ходьбы от дерева выражений и выполнения некоторой потенциально сложной логики. Например, что бы вы хотели увидеть, если я передал в следующем выражении?
Func<bool, object> expr = switch => switch ? 1 : "False";
Этот метод мог либо возвратить int
, либо string
.
Теперь вы можете добиться большего прогресса, разгрузив часть этой логики в компиляторе. Вы можете изменить свой параметр метода с Func<T, object>
на Func<T, TReturn>
и использовать typeof(TReturn)
в этом методе, чтобы определить, что компилятор решил использовать тип возвращаемого выражения.
Конечно, в случае мой пример, вы все равно будете работать против object
. Но ваш пример из x => x.IntegerProperty.ToString()
даст string
, и это то, что вы ищете.
Немного наглый способ (и он включает в себя фактически вызов Func
), но вы можете это сделать:
using System;
class Program
{
static Func<T,object> MakeFunc<T>()
{
return x => 23;
}
static Type GetReturnType<T>(Func<T,object> f)
{
return f(default(T)).GetType();
}
static void Main(string[] args)
{
Type t = GetReturnType(MakeFunc<string>());
Console.WriteLine(t);
}
}
Не гарантируется работа во всех ситуациях, я должен добавить - особенно если default(T)
не является допустимым параметром для Func
. Но, по крайней мере, это потенциальная отправная точка.