我有一个:很多字典.我想将pandas Dataframe列的值映射到字典的键(NOT值).这是我的字典:
dict1={'fruits':('apple','grapes','oranges'),'food':('fish','meat','fibre')}
Run Code Online (Sandbox Code Playgroud)
这里是熊猫系列对象:
df=pd.Series(['fish','apple','meat'])
Run Code Online (Sandbox Code Playgroud)
我想要的所需输出:
0 food
1 fruits
2 food
dtype: object
Run Code Online (Sandbox Code Playgroud) 我试图写一个pandas dataframe以parquet文件格式(在最近的大熊猫版本0.21.0介绍)append模式。但是,该文件不是附加到现有文件,而是被新数据覆盖。我错过了什么?
写语法是
df.to_parquet(path, mode='append')
Run Code Online (Sandbox Code Playgroud)
读取语法是
pd.read_parquet(path)
Run Code Online (Sandbox Code Playgroud) 如何在双月的基础上在一系列日期内生成随机日期numpy?我能想到的一种方法是生成两组随机整数数组:
bimonthly1 = np.random.randint(1,15,12)
bimonthly2 = np.random.randint(16,30,12)
Run Code Online (Sandbox Code Playgroud)
然后,我可以生成日期,每个月使用上述两个数组的"日期"值.但是,这将要求我明确传递月份和年份数据.一种解决方案是生成所需的date_range第一个并用上述数组值替换该范围内的"天".但对于大型阵列,这可能不是最好的解决方案.此方法需要对范围的每个元素进行操作.
我将非常感谢有关如何numpy更有效地执行此操作的任何指示.
在多列groupby对象上,如何仅访问外列?例如下面,我可以通过:df.get_group(('media', 'entertainment content'))命令访问内列(娱乐内容),我希望也能够访问类似的东西:df.get_group(('media')) 但它抛出一个错误:“ValueError: must supply带有多个分组键的 get_group 元组”
[('media', 'entertainment content'),('media', 'internet media')]
df.get_group(('media', 'entertainment content'))
lasts vol prev ticker
industry sub_industry
media entertainment content 379.200012 1828139 354.000000 suntv
entertainment content 420.049988 2675741 404.600006 z
temp.get_group(('media'))
ValueError: must supply a tuple to get_group with multiple grouping keys
Run Code Online (Sandbox Code Playgroud) 如何在现有熊猫DataFrame对象的单个实例中初始化多个列?我可以这样在实例上初始化单列:
df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6]}, dtype='int')
df['c'] = 0
Run Code Online (Sandbox Code Playgroud)
但我不能做类似的事情:
df[['c','d']] = 0 or
df[['c']['d']] = 0
Run Code Online (Sandbox Code Playgroud)
有没有办法可以做到这一点?
考虑以下 pd.DataFrame
df_index = pd.MultiIndex.from_product([['foo','bar'],['one','two','three']])
df = pd.DataFrame(np.random.randint(0,10,size=18, dtype='int').reshape((-1,6)), columns=df_index)
print(df)
foo bar
one two three one two three
0 7 3 8 3 6 0
1 2 5 9 4 3 6
2 4 2 6 6 4 5
Run Code Online (Sandbox Code Playgroud)
我希望将'foo'其中的所有子索引都设置为索引。我该如何实现?我拼杀'set_index'和pd.IndexSlice,但仍不能得到解决
以下命令似乎适用于亚洲的其他位置,但印度的任何位置除外。这里有错误还是我遗漏了什么?这有效:
pd.to_datetime(pd.datetime.now()).tz_localize('US/Pacific').tz_convert('Asia/Hong_Kong')
pd.to_datetime(pd.datetime.now()).tz_localize('US/Pacific').tz_convert('Asia/Karachi'
pd.to_datetime(pd.datetime.now()).tz_localize('US/Pacific').tz_convert('Asia/Dubai')
Run Code Online (Sandbox Code Playgroud)
这不适用于完全相同的格式(如印度的任何位置):
pd.to_datetime(pd.datetime.now()).tz_localize('US/Pacific').tz_convert('Asia/New_Delhi')
Run Code Online (Sandbox Code Playgroud)
抛出以下错误
File "C:\Miniconda\lib\site-packages\pytz\__init__.py", line 180, in timezone
raise UnknownTimeZoneError(zone) UnknownTimeZoneError: 'Asia/New_Delhi'
Run Code Online (Sandbox Code Playgroud) 考虑下面的numpy数组:
import numpy as np
t = np.array(['2016-07-28', '2016-08-25', '2016-09-29', '2016-10-27', '2016-11-17'], dtype='datetime64[D]')
Run Code Online (Sandbox Code Playgroud)
如何为每个数组元素生成前一天和第二天?我想要的输出如下:
array(['2016-07-27', '2016-07-28', '2016-07-29', ..., '2016-11-16',
'2016-11-17', '2016-11-18'], dtype='datetime64[D]')
Run Code Online (Sandbox Code Playgroud)
我目前的方法是分别生成三个数组(上一个,一天,下一个),然后将它们组合如下:
tt = np.sort(np.append(t1,(t,t2)))
Run Code Online (Sandbox Code Playgroud) 考虑下面的数组
dt = DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', name=u'date', freq=None)
Run Code Online (Sandbox Code Playgroud)
我转换上面的to_julian_date()dtype
j = dt.to_julian_date()
Float64Index([2457388.5, 2457388.5, 2457408.5, 2457408.5], dtype='float64')
Run Code Online (Sandbox Code Playgroud)
我怎样才能转换j回来dt
我试过了
dt = pd.to_datetime(j, errors = 'coerce')
Run Code Online (Sandbox Code Playgroud)
它转换j回datetime对象,但值不相同,这是输出
DatetimeIndex(['1970-01-01 00:00:00.002457388',
'1970-01-01 00:00:00.002457388',
'1970-01-01 00:00:00.002457408',
'1970-01-01 00:00:00.002457408'],
dtype='datetime64[ns]', freq=None)
Run Code Online (Sandbox Code Playgroud) 目前我正在使用numpy.logical_or和numpy.logical_来检查两个数组的元素是否具有相同的符号.想知道是否已经有一个ufunc或更有效的方法来实现这一目标.我现在的解决方案在这里
a = np.array([1,-2,5,7,-11,9])
b = np.array([3,-8,4,81,5,16])
out = np.logical_or(
np.logical_and((a < 0),(b < 0)),
np.logical_and((a > 0),(b > 0))
)
Run Code Online (Sandbox Code Playgroud)
编辑//输出
out
Out[51]: array([ True, True, True, True, False, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud) 考虑下面的pandas Series对象,
index = list('abcdabcdabcd')
df = pd.Series(np.arange(len(index)), index = index)
Run Code Online (Sandbox Code Playgroud)
我想要的输出是
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
Run Code Online (Sandbox Code Playgroud)
我对pd.pivot_table和pd.unstack付出了一些努力,而解决方案可能在于正确使用其中之一。我最接近的是
df.reset_index(level = 1).unstack(level = 1)
Run Code Online (Sandbox Code Playgroud)
但这没有给我我想要的输出
//这甚至更接近所需的输出,但是我无法处理索引分组。
df.to_frame().set_index(df1.values, append = True, drop = False).unstack(level = 0)
a b c d
0 0.0 NaN NaN NaN
1 NaN 1.0 NaN NaN
2 NaN NaN 2.0 NaN
3 NaN NaN NaN 3.0
4 4.0 NaN NaN NaN
5 NaN 5.0 …Run Code Online (Sandbox Code Playgroud) 下面是我的数据框架,具有两级索引。我希望“仅”将外部索引转置为列。我想要的输出将是2X2数据帧,而不是现在的4X1数据帧。你们任何人能帮忙吗?
0
0 0 232
1 3453
1 0 443
1 3241
Run Code Online (Sandbox Code Playgroud) pandas ×11
python ×10
dataframe ×5
numpy ×5
datetime ×3
arrays ×2
apache ×1
dictionary ×1
multi-index ×1
parquet ×1
pivot-table ×1
python-2.7 ×1
transpose ×1