从另一个 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
我不明白为什么 df
和 df_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
这是我的代码
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
我不明白为什么 df
和 df_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