从另一个 DataFrame.describe() - Pandas 创建 DataFrame

Create DataFrame from another DataFrame.describe() - Pandas

这是我的代码

import pandas as pd
df = pd.DataFrame({'Test': [861166021755746, 861166021755746, 861166021755746]})
df_2 = pd.DataFrame(df['Test'].describe(), columns = ['Test2'])

print(df.describe())
print(df_2.describe())

这是输出

Test
count  3.000000e+00
mean   8.611660e+14
std    0.000000e+00
min    8.611660e+14
25%    8.611660e+14
50%    8.611660e+14
75%    8.611660e+14
max    8.611660e+14
        Test2
count       0
unique      0

我不明白为什么 dfdf_2

的输出不一样

您需要添加 tolist():

import pandas as pd
df = pd.DataFrame({'Test': [861166021755746, 861166021755746, 861166021755746]})
df_2 = pd.DataFrame(df['Test'].describe().tolist(), columns = ['Test2'])

print(df.describe())

                Test
count  3.000000e+00
mean   8.611660e+14
std    0.000000e+00
min    8.611660e+14
25%    8.611660e+14
50%    8.611660e+14
75%    8.611660e+14
max    8.611660e+14

print(df_2.describe())

              Test2
count  8.000000e+00
mean   6.458745e+14
std    3.986424e+14
min    0.000000e+00
25%    6.458745e+14
50%    8.611660e+14
75%    8.611660e+14
max    8.611660e+14

它是不同的,因为数据帧不同:

print df
print df_2

              Test
0  861166021755746
1  861166021755746
2  861166021755746
          Test2
0  3.000000e+00
1  8.611660e+14
2  0.000000e+00
3  8.611660e+14
4  8.611660e+14
5  8.611660e+14
6  8.611660e+14
7  8.611660e+14

如果你不能使用 tolist(),你会得到空 df_2:

import pandas as pd
df = pd.DataFrame({'Test': [861166021755746, 861166021755746, 861166021755746]})
df_2 = pd.DataFrame(df['Test'].describe(), columns = ['Test2'])


print df
              Test
0  861166021755746
1  861166021755746
2  861166021755746

print df_2

Empty DataFrame
Columns: [Test2]
Index: []

问题在于您的创建方式 df_2。当您说 columns=['Test2'] 时,您将丢弃 df['Test'].describe() 而不是 的所有列 Test2。但是没有名为 Test2 的列。所以你扔掉了所有的列,导致一个空的数据框。

要执行您想要的操作,请提供一个字典,其键为新列名 Test2,其值为 df['Test'].describe():

df = pd.DataFrame({'Test': [861166021755746, 861166021755746, 861166021755746]})
df_2 = pd.DataFrame({'Test2': df['Test'].describe()})

这样:

>>> print(df.describe())

               Test
count  3.000000e+00
mean   8.611660e+14
std    0.000000e+00
min    8.611660e+14
25%    8.611660e+14
50%    8.611660e+14
75%    8.611660e+14
max    8.611660e+14

>>> print(df_2)

              Test2
count  3.000000e+00
mean   8.611660e+14
std    0.000000e+00
min    8.611660e+14
25%    8.611660e+14
50%    8.611660e+14
75%    8.611660e+14
max    8.611660e+14